gpt4 book ai didi

ruby-on-rails - 为 ActiveRecord 关联扩展编写规范

转载 作者:太空宇宙 更新时间:2023-11-03 16:36:55 25 4
gpt4 key购买 nike

例如,给定一个模型

class User < ActiveRecord::Base
has_many :foos do
def find_or_create_or_bar!(foo_name, foo_params)
# ... stuff
find_by_name(foo_name) || create!(foo_params) || bar!
end
end
end

谁能推荐一种编写行为规范的好方法?

describe User do
describe "#foos" do
describe "#find_or_create_or_bar!" do
# ???
end
end
end

是否有一种好的方法来考虑这些类型的规范?我应该指定什么?由于这些是关联,是否可以在这里单独指定 User 类?

最佳答案

如果您担心 User 规范对 Foo 模型了解太多,您可以尝试将此逻辑移至 Foo 上的类方法:

像这样的东西应该可以工作:

class Foo < ActiveRecord::Base

def self.find_or_create_or_bar!(name, params)
# ... stuff
find_by_name(name) || create!(params) || bar!
end

end

然后您可以在用户模型/规范之外对此进行测试。您可能还想进行集成测试,以确保 User 和 Foo 以您想要的方式进行交互。您可以为此使用 Rspec,但我发现当涉及更多逻辑时,Cucumber 更适合。

关于ruby-on-rails - 为 ActiveRecord 关联扩展编写规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6574380/

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