0

我正在黄瓜中编写 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

但它失败并显示消息:

然后我应该被重定向到我的主页# features/step_definitions/web_steps.rb:13 undefined method should_receive' for ApplicationController:Class (NoMethodError) ./features/step_definitions/web_steps.rb:14:in/^我应该被重定向到我的主页$/' features/UserLogin.feature:9:in `然后我应该被重定向到我的主页'

这里可能有什么问题?

4

1 回答 1

1

should_receive 并不是真正的存根,它设置了一个模拟期望。请尝试以下操作:

ApplicationController.stub(:login_ticket) { "2081677" }

您还需要验证 RSpec 是否处于活动状态

require 'cucumber/rspec/doubles'

更多:https ://github.com/cucumber/cucumber/wiki/Mocking-and-Stubbing-with-Cucumber

于 2013-07-03T15:39:29.103 回答