bra*_*rad 20 ruby scope rspec2
我一直非常喜欢使用contexts,subjects并its使用rspec来真正清理我的测试代码.典型例子:
context "as a user" do
subject{ Factory :user }
its(:name){ should == "Bob" }
end
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚的是我如何使这个条件动态(即基于其他对象). its似乎实例eval了块内的属性,所以我无法访问它周围的一切.我喜欢做类似的事情:
its(:name){ should == subject.contact.name }
Run Code Online (Sandbox Code Playgroud)
但我看不出任何实现这一目标的方法.有没有人知道是否有一个方法代理到这个实例eval,它提供了对原始对象的访问?或者,如果有任何其他方式,我可以使用我正在检查的属性实例范围之外的方法?
似乎subject在its块中变为实际属性(name在这种情况下)
有趣的是,我可以访问我的任何let方法,但同样,我无法访问我原来subject的问题.
Dav*_*vid 29
您几乎在回答自己,let在设置主题之前使用作业.然后你可以随处参考:
context "as a user" do
let(:user) { Factory(:user) }
subject { user }
its(:name) { should == user.contact.name }
end
Run Code Online (Sandbox Code Playgroud)
我是context,subject,its情人呢!
| 归档时间: |
|
| 查看次数: |
11721 次 |
| 最近记录: |