Тест RSPEC ....
Учитывая, что у меня есть:
ShopifyAPI::Product.all(:params => {:page => 1, :limit => 10, published_status: 'published', fields: 'id,handle'})
Тогда я могу заглушить это:
allow(ShopifyAPI::Product).to receive(:all)
.with(params: {page: 1, limit: 10, published_status: 'published', fields: 'id,handle'})
.and_return( test_data )
НО возникли проблемы с методом .try (: first) .try (: handle) , как показано ниже:
ShopifyAPI::Product.all(:params => {:page => 1, :limit => 10, published_status: 'published', fields: 'id,handle'}).try(:first).try(:handle)
КОД:
# MODEL
def test_product_handle
ShopifyAPI::Product.all(:params => {:page => 1, :limit => 10, published_status: 'published', fields: 'id,handle'}).try(:first).try(:handle)
end
# CONTROLLER
def test
@test_product_handle = @test.test_product_handle
end
# RSPEC HELPER
def test_product_handles
[{id: 536491098170, handle: "awesome-sneakers"}, {id: 536491032634, handle: "cool-kicks"}]
end
# RSPEC
it "assigns value" do
data = to_recursive_ostruct(test_product_handles.try(:first)).try(:handle)
# above returns "awesome-sneakers"
allow(ShopifyAPI::Product).to receive(:all)
.with(params: {page: 1, limit: 10, published_status: 'published', fields: 'id,handle'})
.and_return( data )
get :test
expect(assigns(:test_product_handle)).to eq(data) # FAILED
# BUT assigns(:test_product_handle) returns nil
end
Все, что нужно отрегулировать / добавить в моем коде выше, чтобы заглушить его.
Заранее спасибо.