我是rspec测试的新手。我在Rails中有两个关于rspec测试的问题。
如果我的 Car 模型是 ActiveRecord ,
class Car < ActiveRecord::Base
...
def get_color
..
end
end
问题1。在rspec测试中(我已准备好所有宝石和配置),有什么区别
before(:each) do
@my_car=Factory.create(:car, params)
end
和
before(:each) do
@my_car=Car.new(params)
@my_car.save
end
(我的意思是内部 rspec测试范围有什么区别,他们在rspec测试中没有相同的效果?不仅在之前(:每个)做语句,但是也描述......做声明)
问题2。正如您在 car 模型中看到的,有一个实例函数get_color
,我可以在我的rspec测试中调用此实例函数吗?以下方式?
@my_car=Factory.create(:car, params)
@my_car.get_color #Can I call instance method in rspec test?
我试过这个,但似乎实例方法没有按照rspec测试中的预期返回结果。但是在rspec测试代码之外工作,但我不确定。
任何人都可以让我清楚这两个问题吗?
答案 0 :(得分:3)
问题1:
2声明与使用Factory girl之间没有区别。使用Factory girl,您可以在创建Object期间执行某些默认行为。在第二种情况下,你需要自己动手。
问题2:
您需要测试您的方法。如果通过示例返回0,您可以添加:
it 'should return 0' do
@my_car.get_color.should == 0
end
我们不能更具体地使用更多代码
答案 1 :(得分:0)
Q1:虽然工厂更灵活,但我更喜欢它们,它实际上是一样的。
Q2:您可以执行@ my_car.get_color,但只是执行它并不意味着什么。您需要检查它是否满足条件(可能应该使用)或者将其存根以返回您想要的值,而不实际执行(常见的rspec实践)。