我怎样才能选择模拟地理编码器?
我希望能够在我的一些测试中模拟地理编码器 gem的结果。
我使用RSpec和Cucumber。 在黄瓜中,我想默认模仿Geocoder结果,但是可以通过添加标签再次打开它。 那将是完美的! RSpec类似的东西也会很好。 它会极大地加速我的测试。
我知道有一些gem用于做类似的事情,例如太阳黑子的 sunspot_test 。 地理编码器有类似的东西吗?
我使用vcr
gem进行远程服务,请查看! 它在您的情况下非常有用。 github.com/myronmarston/vcr
您可以使用mocha来存根和模拟调用。 如果你做了类似的事情(我只是因为我不知道GeoCoder语法而这样做):
GeoCoder.get_data(x, y)
这是你想要的东西,并强制返回别的东西,摩卡允许你这样做:
GeoCoder.stubs(:get_data).with(x, y).returns(my_own_variable)
这将调用GeoCode.get_data,当传入x和y时,返回自定义变量。 但是,此测试将在测试期间持续进行所有后续调用,因此您可以通过调用以下方式取消存储:
GeoCoder.unstub(:get_data)
这完全恢复了正常的方法。
就Rspec而言,在拆解块中你可以取消存储。 就Cucumber而言,你可以在场景之前添加像@stubs_geocoder这样的标签,在features/support/env.rb
你可以添加:
Before('@stubs_geocoder') do # add your stub calls end After('@stubs_geocoder') do # unstub end