rubyonrails:Ruby on rails开发从头来(windows)( 2十 6)- 使用Mock对象

  前面我们测试了model和controller学习了些常用测试思路方法现在我们来深入学习几个有关测试主题个是使用Mock对象   在很多时候我们和实际环境有依存关系比如现在购物车在汇款结账时候要接入网络上银行账号这样就造成了我们测试时候必须要有ernet环境比如我们在model目录里创建了个payment_gateway.rb来处理网络银行相关操作我们在store_control.rbsave_order思路方法里这样写:

gateway = PaymentGateway.
 response = gateway.collect(:login => 'username',
  :password => 'password',
  :amount => cart.total_price,
  :card_number => @order.card_number,
  :expiration => @order.card_expiration,
  :name => @order.name)


  我们在gatewaycollect思路方法中使用银行账号用户名密码等信息但是这样我们在测试时候必须具有真实ernet环境并且我们不想在每次运行测试时候都真正得去操作银行账户

  所以我们需要个假对象(mock)或PaymentGateway个替代品在这里rails为我们提供了方便我们所要做就是在test/mock/test/目录下创建个payment_gateway.rb文件用来覆盖app/models目录下payment_gateway.rb要注意这两处文件名必须完全Mock文件内容:

require 'models/payment_gateway'
PaymentGateway
 def collect(request)
  # I'm a mocked out method
  :success
 end
end


  这意味着我们用mock对象替代了真实models目录下PaymentGateway而collect思路方法也返回个假响应

  在测试时候Rails会先到mock对象所在目录查找这样加载就是mock目录下而不是真实models目录下

  这样通过使用mock对象我们可以将精力放在重要优先级高测试上rails让这些工作变得简单

Tags:  rubyonrails安装 rubyforrails rubyrails rubyonrails

延伸阅读

最新评论

发表评论