,例如,给出一个模型
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
类吗?
答案 0 :(得分:1)
如果您担心用户规范对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 model / spec之外测试它。您可能还希望进行集成测试,以确保User和Foo以您希望的方式进行交互。你可以使用Rspec,但是如果涉及更多的逻辑,我发现Cucumber更适合。