我正在写黄瓜的UserLogin功能,我必须测试用户是否成功登录。除了最后一行,一切顺利:
Then I should be redirected to my home page
问题是它通常不是登录而且需要票证。票证是从ApplicationController#login_ticket获得的。我想把它存根,所以我写了这个网页步骤:
Then(/^I should be redirected to my home page$/) do
ApplicationController.should_receive(:login_ticket).and_return("2081677")
current_path.should eq root_path
end
但它失败并留言:
然后我应该被重定向到我的主页# 特征/ step_definitions / web_steps.rb:13 未定义的方法
should_receive' for ApplicationController:Class (NoMethodError) ./features/step_definitions/web_steps.rb:14:in
/ ^我应该重定向到我的主页$ /' features / UserLogin.feature:9:在`然后我应该被重定向到我的主页'
这里有什么问题?
答案 0 :(得分:1)
should_receive并不是真正的存根,它正在设置模拟期望。请尝试以下方法:
ApplicationController.stub(:login_ticket) { "2081677" }
您还需要验证RSpec是否处于活动状态
require 'cucumber/rspec/doubles'
更多:https://github.com/cucumber/cucumber/wiki/Mocking-and-Stubbing-with-Cucumber