我会为应用程序中对 Web 服务的调用编写一个包装器。
伪代码示例
CallWebService (action, options,...) {
// Code for connectiong to Webservice
}
然后你只是模拟那个函数,就像你想要任何其他函数一样
CallWebService (action, options,...) {
return true;
}
通过这种方式,您可以模拟 Web 服务,而不必担心它是 Web 服务或数据库连接或其他任何东西。你可以让它返回 true 或其他什么。
祝你好运
更新
为了让这个想法更进一步,让你的测试更加强大,你可以使用某种测试参数或环境参数来控制在模拟的 webservice 方法中发生的事情。然后,您可以成功测试您的代码如何处理来自 Web 服务的不同响应。
再次使用伪代码:
CallWebService (action, options,...) {
if TEST_WEBSERVICE_PARAMETER == CORRUPT_XML
return "<xml><</xmy>";
else if TEST_WEBSERVICE_PARAMETER == TIME_OUT
return wait(5000);
else if TEST_WEBSERVICE_PARAMETER == EMPTY_XML
return "";
else if TEST_WEBSERVICE_PARAMETER == REALLY_LONG_XML_RESPONSE
return generate_xml_response(1000000);
}
以及要匹配的测试:
should_raise_error_on_empty_xml_response_from_webservice() {
TEST_WEBSERVICE_PARAMETER = EMPTY_XML;
CallWebService(action, option, ...);
assert_error_was_raised(EMPTY_RESPONSE_FROM_WEBSERVICE);
assert_written_in_log(EMPTY_RESPONSE_LOG_MESSAGE);
}
...
等等,你明白了。
请注意,我所有的示例都是 Negative 测试用例,但这当然也可以用于测试 Positive 测试用例。