2013-05-03 2 views
0

Таким образом, в Rpsec кода я вижу нечто, как это так, я думаю, мы просто вид инициализации переменных для нашего теста здесь:Понимание кусок RSpec кода в приложении Rail

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» части. Может кто-то, пожалуйста, еще немного истолковать это, почему мы это сделали и что с ним происходит? Также, если есть ссылки на документацию, на которые я могу ссылаться, было бы здорово.

ответ

0

См https://www.relishapp.com/rspec/rspec-mocks/v/2-13/docs/method-stubs и https://github.com/rspec/rspec-mocks

Это то, что известно как test stubs; stand-ins для методов на объекте с заранее определенными ответами.

Придумайте stub как короткий путь перезаписать метод объекта, вместо того, чтобы:

def client.create_http_request 
    [mock_http, mock_request] 
end 

Для получения более подробной информации о нюансах между: издевается, окурки и подделки имеют прочитанный над http://www.martinfowler.com/bliki/TestDouble.html и http://martinfowler.com/articles/mocksArentStubs.html

 Смежные вопросы

  • Нет связанных вопросов^_^