【问题标题】:What should and should not be unit tested when prototyping javascript/NodeJS application? [closed]在原型化 javascript/NodeJS 应用程序时应该和不应该对什么进行单元测试? [关闭]
【发布时间】:2016-04-04 11:19:14
【问题描述】:
我知道理想情况下我应该对所有内容进行单元测试。这是我迄今为止的态度。然而,作为一家单人创业公司,我认为这是完全错误的方法,尤其是对于原型设计。主要是因为大部分代码将在投入生产之前进行更改或修改。
我找到了this answer,但它似乎仍然是原型设计的过度杀伤力。
我知道 不测试 不是一种选择,但是如何在应该测试和不应该测试的内容之间找到平衡点?
如果您回答这个问题,我也非常感谢您提供资源链接,如果您知道任何涵盖该主题的好文章。
【问题讨论】:
标签:
javascript
node.js
unit-testing
tdd
【解决方案1】:
测试让您对自己的软件充满信心的因素。这就是测试所做的所有事情,确保您编写的内容与您认为的一样(尤其是在您进行更改时)。
其中一些是个性。您可以编写 0 测试并有 99% 的信心,当然有时您会感到惊讶。你可以写很多测试并且有 10% 的自信,因为你只是一个担心。
就个人而言,我建议为您的主要功能和流程编写测试。登录、向数据库发送数据、运行算法、从某个地方接收事件等。这些只是目前的成功案例,但是当您运行测试时,您会知道软件的主要部分可以工作。
并确保它们协同工作 - 进行一些与多个组件交互的测试。我知道这不是“真正的单元测试”,我不会在集成测试和单元测试之间做出选择,但是如果您在真空中测试所有内容,您将毫无根据地相信所有部分都可以协同工作。
再次强调,运行自动化测试套件的意义在于:如果测试通过,您就知道您的软件可以正常工作(至少在编写测试时,您可以随时添加更多测试,因为出现极端情况)。
在我看来:我建议从“外部”测试您的系统。您正在编写 REST 服务器吗?将您的测试编写为 HTTP 请求,以确保输入正确的数据并返回正确的数据。我会使用真正的数据库而不是模拟所有内容,因为有时持久性或查询的工作方式与您编写它们的方式不同。您将更有信心,您的软件的外部“用户”将获得您期望的数据,并且您的软件按预期运行。