我有一段代码要测试:
class User < ActiveRecord::Base
has_many :servers, :dependent=> :destroy
end请给出一个测试关联代码的RSpec代码示例。
发布于 2012-06-15 22:42:25
对我来说,这个变体工作得很好:
describe User do
it { should have_many(:servers).dependent(:destroy) }
end发布于 2011-12-06 20:27:06
虽然回答你当前的问题可能会对你有所帮助,但你真正需要的是理解测试。
您希望为已经存在的一段代码编写一个测试。使用TDD方法,您将做相反的事情:首先编写测试,然后编写使测试通过的代码。
我建议你买RSpec的书,由务实的程序员写的。它将非常清楚地解释你应该做什么以及如何做。非常好的书,物有所值。
另一个答案是你应该使用Shoulda。虽然这是一个很好的做法,但请先尝试自己做。一旦你明白了你应该做什么,你就可以使用像Shoulda这样的抽象了。
另一个答案是使用工厂。虽然这是一个很好的实践,但我建议您首先使用RSpec内置工具,如模拟对象和存根方法。一旦你理解了这两个元素是如何运作的,你就可以使用像工厂这样的抽象了。顺便说一句,制造更简单。
发布于 2011-12-06 20:11:02
这里我使用Factory girl:
it "should be destroyed when user is destroyed" do
@user.servers << @server
@user.destroy
Server.all.should_not include(@server)
end但您也可以在测试中创建一个新用户,如下所示:
it "should be destroyed when user is destroyed" do
user = User.create(:name => "Julia")
user.servers << Server.create(:server_name => "Julias server")
user.destroy
Server.all.should_not include("Julias server")
endhttps://stackoverflow.com/questions/4524836
复制相似问题