我是Ruby/Rails和Ruby/Rails中的测试框架的新手。我有一个预验证方法(外部API(来验证传入的请求。对于所有的测试用例,我希望存根该调用并测试其余的功能。
我对测试和mocks/stubs/spees(主要是Mockito/Powermmockito的东西(很了解,但不知道如何进行Rails测试。我试着研究RSpec/MiniTest的东西,但它变得势不可挡。
我有一个这样的控制器方法:
def handler
# validate
request_validated = validate_request
unless request_validated
head :unauthorized
return
end
#... remaining codes
end
def validate_request
# validation with external API
end
我使用ActionController::TestCase
设置了控制器测试。在添加验证内容之前,我的所有测试用例都已测试完毕。但我无法绕过验证检查。
我想要像一样的东西
controller.stub(validate_request).then_and_return(true) # need something of this sort
post :handler, as: :json, params: completed_service_parameters
assert_response :no_content
我对使用任何库都持开放态度,但如果有什么不同的话,我更喜欢使用任何内置的Rails。谢谢
我最终使用了'minitest/stub_any_instance'
require 'minitest/stub_any_instance'
...
test 'test stub' do
...
Controller.stub_any_instance(:function, return-value) do
# perform the call within the stubbed block
post :function, as: :json, params: { :param1 => 'random' }
end
...
end