rspec присваивание свойств объекта-макета - PullRequest
5 голосов
/ 07 мая 2010

У меня есть смоделированный объект rspec, значение присваивается свойству. Я изо всех сил пытаюсь оправдать это ожидание в моем тесте rspec. Просто интересно, что такое синтаксис? Код:

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

Тест

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

Проблема в том, что я получаю эту ошибку:

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")

Так как мне установить ожидание для присвоения свойства объекта?

Спасибо

Ответы [ 2 ]

13 голосов
/ 07 мая 2010

В Ruby не существует такого понятия, как «присваивание свойств».В Ruby все является вызовом метода.Таким образом, вы издеваетесь над методом установки так же, как и любым другим методом:

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

Кстати: диагностические сообщения, которые печатают тесты, предназначены не только для shpw.В этом случае сообщение уже говорит вам все, что вам нужно знать:

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")

Как видите, сообщение, которое вы отправили уже говорит вам, как называется метод, который вам нужен, смейся прямо здесь:

 unexpected message :creationDate= with ("2010/5/7")
                    ^^^^^^^^^^^^^^
0 голосов
/ 07 мая 2010

Нашел ссылку об этом здесь

Это просто добавьте: creationDate =, а не просто: creationDate в ожидании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...