cai*_*nne 24 unit-testing rspec ruby-on-rails ruby-on-rails-3
假设您有一个销售小部件的购物网站.但是,每个小部件的库存都是有限的,因此保持"widget.number_still_available"数字是最新的非常重要.
我想写一个rspec测试
it "always displays the correct number still available" do
# Assume there is a before method that sets up a widget with 5 available
widget.number_still_available.should == 5
# User "a@b.com" purchases 2 widgets
widget.number_still_available.should == 3
# User "c@d.com" purchases 1 widget
widget.number_still_available.shhould == 2
# User "a@b.com" cancels purchase of 1 widget
widget.number_still_available.should == 4
end
Run Code Online (Sandbox Code Playgroud)
我希望能够编写执行"购买"和"取消"方法的仅测试方法.由于各种原因,这些操作与我的模型中的任何"真实"方法都不对应(最重要的是,PHP中有一个解耦的后端系统执行部分购买和取消操作).
使用RSpec时放置此代码的正确位置在哪里?在黄瓜中,我可以写几个步骤 - 但我不确定RSpec的正确等价物是什么.
Rya*_*igg 46
我建议在spec/support
调用中创建一个新文件purchase_helpers.rb
并将其放入其中:
module PurchaseHelpers
def purchase_widgets(user, count=1)
# Code goes here
end
def cancel_purchase(user, count=1)
# Code goes here
end
end
RSpec.configure do |c|
c.include PurchaseHelpers
end
Run Code Online (Sandbox Code Playgroud)
这样做的好处不是把它放进去,spec/spec_helper.rb
而是因为它并没有把很多不相关的RSpec代码集中在那个文件上.将事情分开是更好的做事方式.
归档时间: |
|
查看次数: |
7023 次 |
最近记录: |