Ser*_*off 2 rspec ruby-on-rails mocking
令人惊讶的是找不到任何关于此的信息。
试图存根这个方法链:
Twitter::REST::Client.new(<some credentials>).user.followers_count
Run Code Online (Sandbox Code Playgroud)
我真正想做的是:
allow_any_instance_of(Twitter::REST::Client).to receive_message_chain(:user, :followers_count).and_return 0
Run Code Online (Sandbox Code Playgroud)
但它没有用。出错了undefined method 'receive_message_chain'。
所以我在 Rspec-Mocks 3.0 上找到了这个教程:https : //github.com/rspec/rspec-mocks/blob/master/features/method_stubs/receive_message_chain.feature
并尝试了这个:
subject = Twitter::REST::Client
allow(subject).to receive_message_chain(:user, :followers_count).and_return 0
expect(Twitter::REST::Client.new.users.followers_count).to eq 0
Run Code Online (Sandbox Code Playgroud)
只是为了尝试一下 - 它也不起作用。有什么我做错了吗?
我有rspec-mocks (3.0.0.beta1)我的Gemfile.lock。
其他类型的存根(例如.to receive(:method)工作正常。
该方法receive_message_chain是在 3.0.0.beta2 中引入的,如https://github.com/rspec/rspec-mocks/blob/master/Changelog.md#300beta2--2014-02-17 中所述,因此如果您升级您的版本rspec-mocks(当前为 3.0.0.rc1),您应该可以使用该语法。
| 归档时间: |
|
| 查看次数: |
1068 次 |
| 最近记录: |