他们说完美的测试只包括测试框架和被测试的类;其他一切都应该被嘲笑。那么,联想呢?
我指的不是简单has_many
的belongs_to
关联,而是关联扩展和范围。我真的很想为范围编写规范,但我不知道该怎么做。
他们说完美的测试只包括测试框架和被测试的类;其他一切都应该被嘲笑。那么,联想呢?
我指的不是简单has_many
的belongs_to
关联,而是关联扩展和范围。我真的很想为范围编写规范,但我不知道该怎么做。
我也陷入了这个困境。在 Rspec 中,他们摆脱了“单元测试”的想法。在实践中,Rails 中的单元测试至少对我来说意味着测试模型上的属性值。但你是对的,联想呢?
在 Rspec 中,您只需创建一个spec/models
目录,然后测试您的模型。在模型规范 ( spec/models/user_spec.rb
) 的顶部,你有你的单元测试(测试你的属性),然后你测试下面的每个关联:
require 'spec_helper'
describe User do
context ":name" do
it "should have a first name"
it "should have a last name"
end
# all tests related to the gender attribute
context ":gender" do
it "should validate gender"
end
# all tests related to "belongs_to :location"
context ":location" do
it "should :belong_to a location"
it "should validate the location"
end
# all tests related to "has_many :posts"
context ":posts" do
it "should be able to create a post"
it "should be able to create several posts"
it "should be able to list most recent posts"
end
end
但是现在您在测试中测试Post
和Location
模型User
?是的。但是该Post
模型除了与用户相关的功能之外,还会有很多额外的东西。与 相同Location
。所以你会spec/models/location_spec.rb
喜欢:
require 'spec_helper'
describe Location do
context ":city" do
it "should have a valid city"
end
context ":geo" do
it "should validate geo coordinates"
end
end
在我看来,这些都不应该被嘲笑。在某些时候,您必须实际测试关联是否正在保存并且可查询。就在这里。想想看,在模型规范中,你有属性的“单元测试”和关联的“集成测试”。