2010-05-07 3 views
4

J'ai un objet rspec mocké, une valeur est assignée à la propriété. Je me bats pour que cette attente soit satisfaite dans mon test rspec. Je me demandais juste ce que la sytax est? Le code:rspec attribution d'une propriété d'objet moqueur

def create 
@new_campaign = AdCampaign.new(params[:new_campaign]) 
@new_campaign.creationDate = "#{Time.now.year}/#{Time.now.mon}/#{Time.now.day}" 
if @new_campaign.save 
    flash[:status] = "Success" 
else 
    flash[:status] = "Failed" 
end end 

Le test

it "should able to create new campaign when form is submitted" do 
    campaign_model = mock_model(AdCampaign) 
    AdCampaign.should_receive(:new).with(params[:new_campaign]).and_return(campaign_model) 
    campaign_model.should_receive(:creationDate).with("#{Time.now.year}/#{Time.now.mon}/#{Time.now.day}")campaign_model.should_receive(:save).and_return(true) 
    post :create 

    flash[:status].should == 'Success' 
    response.should render_template('create') end 

Le problème est que je reçois cette erreur:

Spec::Mocks::MockExpectationError in 'CampaignController new campaigns should able to create new campaign when form is submitted' Mock "AdCampaign_1002" received unexpected message :creationDate= with ("2010/5/7") 

Alors, comment puis-je définir une attente pour l'attribution de la propriété de l'objet?

Merci

Répondre

12

Il n'existe pas de «propriété assignation» dans Ruby. Dans Ruby, tout est un appel de méthode. , Vous vous moquez donc la méthode setter comme vous le feriez pour tout autre méthode:

campaign_model.should_receive(:creationDate=).with(...) 

BTW: les messages de diagnostic que les tests impriment ne sont pas seulement pour shpw. Dans ce cas, le message déjà vous dit tout ce que vous devez savoir:

Spec::Mocks::MockExpectationError in 'CampaignController new campaigns should able to create new campaign when form is submitted' Mock "AdCampaign_1002" received unexpected message :creationDate= with ("2010/5/7")

Comme vous pouvez le voir, le message que vous avez posté déjà vous dit ce que le nom de la méthode est que vous devez maquette ici:

unexpected message :creationDate= with ("2010/5/7") 
        ^^^^^^^^^^^^^^ 
0

trouvé un lien à ce sujet here

Ceci est simplement par ajouter: creationDate = plutôt que de simplement: creationDate dans l'attente.

+0

+ vous pouvez également utiliser (: createionDate =). avec () – charleetm

Questions connexes