【发布时间】:2011-09-03 16:09:09
【问题描述】:
假设我有一个实例方法,它可以执行许多需要测试的不同事情,例如store#process_order。我想测试它是否向客户发送电子邮件,在订单表中添加一个条目,向信用卡收费等。在 rspec 中设置它的最佳方法是什么?目前,我正在使用 rspec 和 factory girl 我做这样的事情:
describe Store do
describe "#process_order" do
before do
@store = Factory(:store)
@order = Factory(:order)
# call the process method
@store.process_order(@order)
end
it 'sends customer an email' do
...
end
it 'inserts order to db' do
...
end
it 'charges credit card' do
...
end
end
end
但感觉真的很乏味。这真的是为我需要确保做几件不同事情的方法编写规范的正确方法吗?
注意:我对这是否是好的设计的答案不感兴趣。这只是我为解决我的问题而编造的一个示例 - 如何编写这些类型的规范。
【问题讨论】:
-
如果它做了几个不同的事情,你应该有几个不同的测试,你会这样做。 DRY 不是规则!
标签: ruby-on-rails ruby rspec tdd bdd