【发布时间】:2014-08-12 22:11:14
【问题描述】:
我有一个下面的规范,我是 mocking 我的用户模型和 stubbing 它的方法。
require 'spec_helper'
describe User do
let(:username) {"test@test.com"}
let(:password) {"123"}
let(:code) {"0"}
context "when signing in" do
let(:expected_results) { {token:"123"}.to_json }
it "should sign in" do
expect(User).to receive(:login).with({email: username, password: password, code: code})
.and_return(expected_results)
end
end
end
当我尝试运行我的测试用例时,出现以下错误。
Failure/Error: expect(User).to receive(:login).with({email: username, password: password, code: code})
(<User (class)>).login({:email=>"test@test.com", :password=>"123", :code=>"0"})
expected: 1 time with arguments: ({:email=>"test@test.com", :password=>"123", :code=>"0"})
received: 0 times
【问题讨论】:
-
所以,要清楚,您有一个名为
login的用户方法?并且没有定义控制器动作。您希望在什么时候调用 User.login?你什么时候做sessions#create?没有调用该控制器方法...或任何控制器方法。 -
也许您可以在问题中包含您的会话控制器代码和用户模型?但是,如果这是一个模型单元测试,那么在这种情况下模拟是不合适的。
标签: ruby-on-rails ruby ruby-on-rails-3 rspec