gpt4 book ai didi

ruby-on-rails - 摩卡 : How do you set up an expectation for an instance method?

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

假设这个 ruby​​ 代码:

class User
def self.failed_login!(email)
user = User.find_by_email(email)
if user
user.failed_login_count = user.failed_login_count + 1
user.save
end
end
end

我想编写一个测试来测试在给出无效电子邮件时永远不会调用 user.save。例如:

it "should not increment failed login count" do
User.expects(:save).never()
User.failed_login!("doesnotexist")
end

此测试目前通过,但当我提供有效的电子邮件地址时它也会通过。

如何使用 Mocha 设置期望值? (或任何其他模拟框架)以便它测试从未调用过任何 User 实例的保存方法?

(最好不要 stub /模拟 find_by_email 方法,因为将来如何获取用户的实现可能会发生变化)

干杯

最佳答案

对于可能偶然发现的其他人,我在另一篇将 RR 作为模拟框架处理的帖子中找到了答案......在 Mocha 中你可以这样做:

User.any_instance.expects(:save).never()

关于ruby-on-rails - 摩卡 : How do you set up an expectation for an instance method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/914044/

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