[英]DRY up contexts-(related methods) Rspec matrix?
我有一些与ActiveRecord valid?
方法“相关”的方法valid?
, invalid?
和errors
; 以及要在其中执行/演示的几个context
。
因此,显然存在一个context
与方法返回的矩阵。
一种常见的模式/做法是将context
s嵌套在describe '#<method>'
块中,而不是相反地'round,对吗? 我没有为每个方法在describe
复制context
而是为“集合”尝试了一个块。
但是... #errors
比其他#errors
更复杂并且值得更多关注-因此似乎确实值得describe '#errors'
一个describe '#errors'
块
describe MyClass do
...
describe '#valid? / #invalid? / #errors' do
context 'all good' do
...
it { should be_valid }
it { should_not be_invalid }
describe '#errors' do
it { should be_an_instance_of( Hash )}
it { should be_empty }
it ...
...
end
end
context 'some bad' do
...
it { should_not be_valid }
it { should be_invalid }
describe '#errors' do
it { should be_an_instance_of( Hash )}
it ...
its ...
...
end
end
end
...
end
随着context
的增加, describe '#errors'
及其it { should be_an_instance_of( Hash )}
开始变得重复。
是否有DRYer方法可以做到这一点? 这是“可以接受的”非干燥吗?
TIA
习惯上, describe
是针对“事物”的, context
是针对“状态”的,所以,是的,在我看来,您已经嵌套并适当地使用了它们。 至于您的其他问题,我不知道采用DRYer的方式来完成您所做的事情,是的,我认为您在可接受的DRY中所显示的内容。 如果您在#errors
案例之间有更多的共同点,则可以引入“共享示例组”,但是在这种情况下似乎没有#errors
。
综上所述,我不认为自己是该主题的专家,并且将期待有更多的见解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.