【问题标题】:How to unit test Webservices methods that are called from AJAX如何对从 AJAX 调用的 Web 服务方法进行单元测试
【发布时间】:2014-02-19 21:16:18
【问题描述】:
我正在体验 TDD,我需要知道如何对将通过 AJAX 在 js 中调用的 Web 服务进行单元测试。我已经查看了如何模拟 ajax 调用并单独对 web 服务进行单元测试,但我意识到如果其他人更改 web 服务中的参数类型或数量并且完全忘记更改 ajax 调用中的参数会怎样。有没有办法在测试期间将两者连接起来,以便它们相互依赖,因为目前即使我更改 web 服务中的参数,即使 ajax 调用与 web 服务具有不同的参数,它们也只会简单地通过测试。
编辑:
JS 和 C# 的测试是分开的,但是如果没有进行测试的人进入那里并编辑其中一个 C# 方法并进行测试并忘记了调用它的 AJAX 调用,那么所有测试都会通过,没有人会通过在用户点击它或转到它之前知道存在错误。
【问题讨论】:
标签:
javascript
ajax
web-services
unit-testing
【解决方案1】:
单元测试是指一次测试单个独立的模块化单元。所以 Jquery 调用和 webservice 响应在这里是两个独立的单元(客户端和服务器)。
Junit 范围是测试具有所有逻辑输入的模块化单元。尝试识别所有可能来自 JQuery 的请求,然后模拟请求以测试 Web 服务。
【解决方案2】:
您的目标不应该是对 Javascript 中的 AJAX 函数是否正常工作进行单元测试,而应该是测试您的 Web 服务是否表现出预期的行为,以及您的 JavaScript 是否使用正确的格式进行预期的 AJAX 调用。
大多数服务器技术允许您实例化您的 Web 服务类,而无需将其实际托管/绑定到任何东西。然后,您可以通过单元测试直接调用服务上的方法。
如果您对 AJAX 调用有一个可靠的抽象,可以使用依赖注入来模拟出来,那么您的 JavaScript 单元测试会变得更容易。