可以使用默认属性值创建模拟

时间:2012-10-29 05:35:57

标签: rspec

可以使用默认属性值创建模拟吗?我不确定这个问题究竟是什么意思。两种可能性:

  1. 如果对象t=Movie.find(10),然后我说m=mock(t),是否会自动继承t的所有属性值?

  2. 有没有办法创建一个带有默认属性的模拟对象,这样我们每次使用它时都可以克隆它,而不必通过系列存根到"initialize"那些属性?

  3. 感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

说到1)它没有意义。如果在测试中你可以通过Movie.find(10)访问真实对象,则不必使用模拟。假设你正在使用rspec_mocks,并且你要编写一个声明特定方法被调用的断言,你可以简单地写:

t = Movie.find(10)
t.should_receive(:foo)

同时检查一下:https://www.relishapp.com/rspec/rspec-rails/v/2-11/docs/mocks/mock-model 这个https://www.relishapp.com/rspec/rspec-rails/v/2-11/docs/mocks/stub-model

非常有用的帮助器,用于在规范中模拟AR / Mongoid和其他模型。

factory_girl一起,您可以在此模拟上设置属性,例如movie = mock_model(Movie, FactoryGirl.attributes_for(:move))