Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3.2 理解Rail应用程序中的一段RSpec代码_Ruby On Rails 3.2_Rspec2 - Fatal编程技术网

Ruby on rails 3.2 理解Rail应用程序中的一段RSpec代码

Ruby on rails 3.2 理解Rail应用程序中的一段RSpec代码,ruby-on-rails-3.2,rspec2,Ruby On Rails 3.2,Rspec2,因此,在Rpsec代码中,我看到了类似的情况,因此我想我们只是在这里初始化测试的变量: let(:base_uri) { 'http://127.0.0.1' } let(:tenant_id) { 'tenant_id' } let(:client) { PersonSearch::Client.new(base_uri, tenant_id) } let(:mock_http) { double('Net::HTTP') } let(:mock_request) { do

因此,在
Rpsec
代码中,我看到了类似的情况,因此我想我们只是在这里初始化测试的变量:

  let(:base_uri) { 'http://127.0.0.1' }
  let(:tenant_id) { 'tenant_id' }
  let(:client) { PersonSearch::Client.new(base_uri, tenant_id) }
  let(:mock_http) { double('Net::HTTP') }
  let(:mock_request) { double('Net::HTTP::Get') }
  let(:mock_response) { double('HTTPResponse') }
  let(:path) { "/people/search?#{ params.to_param }" }
例如,在一次测试中,我看到如下情况:

context 'default parameters' do
let(:params) { { search_query: 'a', page: client.default_page, page_size: client.default_page_size } }
let(:mock_results) do
  PersonSearchServicesHelper.create_mock_person_search_result(client.default_page_size).to_json
end

it 'uses default params when options are missing' do
  client.stub(:create_http_request).and_return([mock_http, mock_request])
  client.stub(:request).and_return(mock_response)
  client.should_receive(:create_http_request).with(:get, path, {})
  client.should_receive(:request).with(mock_http, mock_request, client.retry_on).once

  mock_response.stub(:body).and_return(mock_results)
我最大的“不明白”是“.stub”部分。有人能不能再解释一下我们为什么这么做,以及发生了什么?另外,如果有我可以参考的文档链接,那就太好了。

请参阅和

这些就是我们所知道的;具有预定义响应的对象上方法的代理

stub
视为覆盖对象方法的较短方法,而不是:

def client.create_http_request
  [mock_http, mock_request]
end
有关模拟、存根和赝品之间细微差别的更多信息,请阅读和阅读