rspec, дразнящий присвоение свойства объекта

У меня есть 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")

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

Спасибо

5
задан charleetm 7 May 2010 в 09:36
поделиться

2 ответа

В 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")
                    ^^^^^^^^^^^^^^
14
ответ дан 18 December 2019 в 13:11
поделиться

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

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

0
ответ дан 18 December 2019 в 13:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: