我的问题是测试(MiniTest)一个查询API的Rails 4.0控制器。例如,我有这个控制器:
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。因此,当我想将MiniTest与rails一起使用时,我该怎么做呢:
require 'test_helper'
class InsolentControllerTest < ActionController::TestCase
test "should get show" do
get :show, { value1: 10, value2: 34 }
assert_response :success
end
end
答案 0 :(得分:1)
我最终使用rspec-mocks并使用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