cha*_*etm 5 ruby rspec ruby-on-rails
我有一个rspec模拟对象,一个值被赋值为属性.我很难在我的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
Run Code Online (Sandbox Code Playgroud)
考试
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
Run Code Online (Sandbox Code Playgroud)
问题是我收到此错误:
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")
Run Code Online (Sandbox Code Playgroud)
那么我如何设置对象属性赋值的期望?
谢谢
Jör*_*tag 13
Ruby中没有"属性赋值"这样的东西.在Ruby中,一切都是方法调用.所以,你就像你使用任何其他方法一样模拟setter方法:
campaign_model.should_receive(:creationDate=).with(...)
Run Code Online (Sandbox Code Playgroud)
顺便说一句:测试打印出的诊断消息不仅仅是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")
^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8653 次 |
最近记录: |