Angular Unit/E2E 用量角器和茉莉花测试

Angular Unit/E2E testing with protractor and jasmine

我正在编写一个 angular 应用程序,我的控制器调用一个 API,然后我将 returns 实时数据显示在我的 html 文档上。

我使用 Protractor 进行端到端测试,使用 jasmine 进行单元测试。

我正在模拟我的 API 调用,以确保 API 不会被调用。

我的问题是我是否应该使用量角器测试 API 调用,并检查我的 html 文档是否在 GET 请求后更新,或者我是否应该测试 API 在用 jasmine 进行单元测试时调用。

我觉得答案是我应该用我的单元测试和端到端测试来测试这个 API 调用,但我希望 SO 上的某个人可以提供清晰的信息。

单元测试的主要目标是测试您的代码(无论是 JavaScrip 还是其他)是否在做它应该做的事情。每个测试都应该针对静态或人为设计的数据进行,并且永远不应 运行 针对 API。静态数据为您提供所需的控制。如果您的代码需要在 X 等于 7 时分支,您可以有意地设置该值并验证您的代码确实分支。当你 运行 对抗 API 时,你没有那个控制权。即使您是 API 的控制者,对其进行单元测试也是养成的坏习惯。

端到端测试完全不同。在这里,我们不是在测试代码是否在粒度级别上工作(我们已经在单元测试中这样做了),我们是在测试应用程序是否作为一个整体工作。单击应用程序中的特定按钮时,是否发生了预期的事情?所有预期的元素都出现在页面上了吗?您仍然需要针对已知数据进行测试,这样做与单元测试一样重要,但在这里您可以看到您的应用程序在 运行ning 时如何反应。特定屏幕加载时间是否过长?单击按钮是否没有给您预期的结果?这种测试让您可以像用户一样点击您的应用程序(除了更快。)

您应该 运行 在您的应用中进行这两种测试。构建过程中的单元测试应 运行,构建完成后端到端测试应 运行。