繁体   English   中英

在上下文中干燥(相关方法)Rspec矩阵?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM