【问题标题】:Unit testing on an Angular app with Karma使用 Karma 对 Angular 应用程序进行单元测试
【发布时间】:2016-04-05 05:48:09
【问题描述】:

所以我对测试用例很陌生,我有一个小问题(具体到我的案例)。

我目前正在开发一个 Angular 应用程序并开始使用 Karma (Mocha/Chai) 进行单元测试。 这个应用程序的后端是一个节点 RESTful API。 所以基本上,该应用程序是一组控制器和服务,它们进行一些基本的 CRUD 操作。

例如,在创建新用户时,我使用 Angular 的表单指令处理 html 表单中的验证。在服务器端,对接收到的对象也进行了验证。 所以通常我在控制器上的功能不再是这样的:

create() {
  UserService.create(vm.newUser).then(callBackToDisplaySuccessOrErrorMessage); 
}

这可能听起来很傻,但我是这个领域(测试用例)的新手,我有点困惑,所以我的第一个问题是:

既然 http 调用是模拟的,那么在我的应用程序中进行单元测试有什么意义?

我的第二个问题是:

如何以适当的方式对我的案例中的基本应用程序进行单元测试?

【问题讨论】:

  • 测试控制器的重点是检查您的控制器是否使用预期的参数调用预期的服务,并对成功/错误做出正确的反应。对服务进行单元测试的目的是检查它是否发送了具有正确 URL 和正文的预期 HTTP 请求,并将成功/错误结果正确地传输给它的调用者。但是进行单元测试并不意味着您不应该进行集成(也称为端到端)测试来验证应用程序作为一个整体是否按预期工作。

标签: angularjs unit-testing mocha.js karma-runner chai


【解决方案1】:

为了澄清您的疑问: 1. Mocking 用于测试通信。 在为您的控制器编写规范时,他们更感兴趣的是验证是否使用预期参数调用了对 userService.create 的调用。同样,您将模拟来自服务的响应(如果有)。至此,您已经验证了 Controller 与 Service 通信的功能。

现在,当您为服务编写规范时,是的,http 调用被模拟了,但您仍然在验证 http url、要调用的预期方法(如 GET、POST 等)、要传递的参数。您只需模拟预期的成功/失败响应并验证您的处理程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多