【发布时间】:2014-08-23 01:20:36
【问题描述】:
我对如何在不使用 its(:...) 子句的情况下测试简单的 CSV 导入器存有疑问。
在 RSpec 2.x 中,我的方法是将导入的对象设置为我的规范的主题,然后在 its(...) 块中测试每个属性。这是一个类似于验收的测试,但它对我很有帮助,我不想对我用来进行 CSV 解析的库进行单元测试,因为它真的是一个微不足道的实现,所以我对 end-to 没意见-结束测试。
现在,使用 RSpec 3,我可以通过 transpec 使该规范通过,但我阅读了the explanation about why the its block has been removed,我认为 RSpec 3 提出了一种不同的方法,对吧?那么你将如何测试呢?
我觉得这样丑陋的积木不多
describe '#email' do
subject { super().email }
it { is_expected.to eq("john_doe@email.com") }
end
比
its(:email) { should == "john.doe@email.com" }
因为他们做的事情完全相同。
我听说您需要测试“行为”,但是验收测试呢?去这里的建议方式是什么? 谢谢!
【问题讨论】:
-
it 'has some email' { expect(subject.email).to eq("john_doe@email.com") }有什么问题? -
@UriAgassi - 谢谢!是的,你是对的。
specify { expect(subject.email).to eq("john_doe@email.com") }是一个正确的解决方案。我想知道如何完成 Myron Marston 在我在问题中链接的文章中指出的内容。