首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Node.js中,服务器应用程序的测试是如何组织的?

在Node.js中,服务器应用程序的测试是如何组织的?
EN

Stack Overflow用户
提问于 2013-12-13 00:23:10
回答 1查看 9.7K关注 0票数 22

我开始向我们的Node.js服务器应用程序添加测试,因为我们正在缓慢地部署到生产环境中。我有一个API,有许多可能的请求要测试。

我的问题是:你如何组织你的测试,使它不会成为一个很快就会迷失的大文件?

我为Sublime 应用编程接口路由编写了测试(我还有许多其他的应用编程接口路由要测试),下面是它的外观(在Sublime文件概述中):

而且这个测试甚至还不能涵盖所有的情况。

我使用mochashouldexpect进行验证,使用superagent进行API调用。您将如何组织这些测试,使其不会在一个可怕的大文件中发展?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-13 00:30:29

有很多方法可以将文件分解为更小、更易于管理的部分。它们中的大多数都围绕着mocha--recursive标志的使用展开。归根结底,这是个人选择的问题,以及什么对团队/个人有效。

选项1:通过点符号实现命名空间

在不带--recursive标志的情况下运行mocha,并使用点符号命名文件。然后,您可以通过HTTP方法进一步分解它,如果您愿意,甚至可以通过通过/失败来进一步分解。例如,用户路由的文件名应该是route.user.get.pass.js,并且位于test/文件夹的根目录中。此文件的代码将如下所示:

代码语言:javascript
复制
describe('GET /users', function () {
  describe('when the request is valid', function () {
    it('should return 200 OK');
    it('should have unicorns');
    it('should have ponies too');
  });
});

然后,另一个文件名为route.resource.post.fail.js的测试将如下所示:

代码语言:javascript
复制
describe('POST /users', function () {
  describe('when the request is invalid', function () {
    it('should return 400 Bad Request');
    ...
  });
});

在使用mocha的grep特性时,这使得贪婪的个人测试变得轻而易举

选项2:通过文件夹命名空间

然而,与选项1类似,在这种情况下,您将在运行mocha时使用--recursive标志,并使用文件夹而不是嵌套文件名。

代码语言:javascript
复制
test/
  routes/
    users/
      post.js
      get.js
      put.js
  models/
    User.js

选项3:使用模块进行分离

这种方法是前两种方法的组合,应该在不使用--recursive标志的情况下运行。在test目录的根目录中,您可以将规范文件命名为routes.userSpec.js,代码如下:

代码语言:javascript
复制
describe('/users', function () {

  describe('GET', function () {

    var tests = require('./users/get');

    it('should return 200 OK', tests.200);
    it('should have unicorns', tests.unicorns);
    it('should have ponies too', tests.ponies);

  });

  describe('POST', function () {

    var tests = require('./users/post');

    it('should return 200 OK', tests.200);
    it('should create unicorns', tests.unicorns);
    it('should create ponies too', tests.ponies);

  });

});

然后在test/users文件夹中定义模块,如下所示:

代码语言:javascript
复制
test/
  users/
    get.js
    post.js
  routes.userSpec.js

选项4:代码折叠

有时大文件是不可避免的,这就是为什么所有好的文本编辑器都有代码折叠功能。

票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20548723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档