gpt4 book ai didi

ruby-on-rails - 哪个是使用 rspec 测试 ActiveRecord 验证的更好方法?为什么?

转载 作者:行者123 更新时间:2023-11-28 21:31:09 25 4
gpt4 key购买 nike

我要测试一个模型,像这样;

class Post < ActiveRecord::Base
validates_presence_of :title
# ...
end

我找到了两种主要的方法来测试验证:

1.使用thoughtbot的shoulda gem https://github.com/thoughtbot/shoulda

describe Post do
it { should validate_presence_of(:title) }
end

2.按照书上的方式直接测试validations

describe Post do
it "must has title" do
post = Post.create
expect(post).not_to be_valid
end

所以我想知道哪种方法更好,为什么。提前致谢。

最佳答案

第一个测试验证 Post 声明了 validates_presence_of :title,第二个测试验证何时 Post声明了 validates_presence_of :title,并且实例没有标题,实例将无效。

一方面,由于不需要测试validates_presence_of的内部,更正确的测试应该是第一个。

另一方面,可以说第一个测试依赖于实现细节(特定功能的使用),而第二个测试行为,所以 更正确。

所以这两个用例都有合理化。

我个人更喜欢第一个。

编辑

我在 shoulda 实现中挖掘了一点,它实际上通过为实例设置一个 nil 值来测试,并检查它是否有正确的错误,所以实际上,它确实检查行为。在这种情况下,您绝对应该使用它。

关于ruby-on-rails - 哪个是使用 rspec 测试 ActiveRecord 验证的更好方法?为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22110723/

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