У меня есть rspec дразнивший объект, значение, присваиваются к, свойство. Я - struggleing, чтобы встретить то ожидание в моем тесте rspec. Просто задавшись вопросом, каков sytax? Код:
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")
Таким образом, как я устанавливаю ожидание присвоения свойства объекта?
Спасибо
В Ruby не существует такого понятия, как "присвоение свойства". В Ruby все является вызовом метода. Поэтому вы издеваетесь над методом setter так же, как и над любым другим методом:
campaign_model.should_receive(:creationDate=).with(...)
BTW: диагностические сообщения, которые выводят тесты, не просто так. В данном случае сообщение уже говорит вам все, что нужно знать:
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")
^^^^^^^^^^^^^^
Нашел ссылку об этом здесь
Это просто добавление: creationDate =, а не просто: creationDate в ожидании.