gpt4 book ai didi

ruby-on-rails - 收到失败/错误 : expected: 1 time with any arguement,:任何参数 0 次

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:55 24 4
gpt4 key购买 nike

我有一个下面的规范,我在其中模拟我的用户模型并 stub 它的方法。

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

最佳答案

你误解了 expect 是什么。

expect(x).to receive(:y) 正在 x 上删除 y 方法。

即,它正在掩盖该方法。

描述这一点的一种方式是您“期望当您实际运行代码时方法 y 将在 x 上调用”

现在,您的规范不会调用任何实际代码...它只是设置期望...然后停止。

如果您正在测试 login 方法,那么您不需要期望将其 stub ,而是实际调用它。

例如 User.login(email: 用户名, password: 密码, code: code)

您目前实际上根本没有进行测试。只是您设置的 stub ,然后永远不会使用。

关于ruby-on-rails - 收到失败/错误 : expected: 1 time with any arguement,:任何参数 0 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25274941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com