在测试期间将模拟的API对象传递给rails控制器
我的问题是关于测试(MiniTest)一个查询API的Rails 4.0控制器。例如,我有一个控制器:在测试期间将模拟的API对象传递给rails控制器,api,ruby-on-rails-4,controller,tdd,minitest,Api,Ruby On Rails 4,Controller,Tdd,Minitest,我的问题是关于测试(MiniTest)一个查询API的Rails 4.0控制器。例如,我有一个控制器: class InsolentController def show @result = SomeApi.get value1, value2 end end 现在我想在不调用API的情况下对其进行测试,因此如果我使用ASP.NET MVC,我可以执行以下操作: public Class InsolentController { private
class InsolentController
def show
@result = SomeApi.get value1, value2
end
end
现在我想在不调用API的情况下对其进行测试,因此如果我使用ASP.NET MVC,我可以执行以下操作:
public Class InsolentController
{
private SomeAPI someApi;
public InsolentController(SomeAPI api = null)
{
this.someApi = api ?? new SomeAPI();
}
public ActionResult Show()
{
var result = this.someApi.Get(value1, value2);
// return, etc...
}
}
我这样做是为了模仿SomeAPI。那么,当我想在rails中使用MiniTest时,我该如何做呢,例如:
require 'test_helper'
class InsolentControllerTest < ActionController::TestCase
test "should get show" do
get :show, { value1: 10, value2: 34 }
assert_response :success
end
end
需要“测试助手”
类IslandControllerTest
我最终使用minitest并设置了它
您应该能够轻松地执行以下操作:
require 'test_helper'
class InsolentControllerTest < ActionController::TestCase
test "should get show" do
value1 = 10
value2 = 34
expect(SomeApi).to receive(:get).with(value1, value2)
get :show, { value1: value1, value2: value2 }
assert_response :success
end
end
需要“测试助手”
类IslandControllerTest
我遇到了一个类似的问题,你有没有想过?嗨,汤姆,没有。无论如何,我只是在玩弄Rails框架,所以这不是什么大不了的事,但也许它会帮助一些人。很好,你根据你的答案找到了答案。