当前位置: 首页 > 面试题库 >

使用mocha.js加入来自多个文件的测试

公西繁
2023-03-14
问题内容

我试图将来自多个文件的所有测试合并到一个文件中,如下所示:

  describe('Controllers', function() {
    describe('messages.js', function() {
      require('./controllertests/messages').test(options);
    })
    describe('users.js', function() {
      require('./controllertests/users').test(options);
    })
  })

我很确定这不是参加测试的最佳方式,我很难找到如何执行此操作的示例:


问题答案:

如果你想包含多个模块 您的describe层次结构就像你在你的问题做什么,你在做什么是相当多的
,除非你想要写摩卡自定义测试装载机。编写自定义加载器不会比已有代码容易或使代码更清晰。

这是我将如何更改某些事情的示例。test本示例中的子目录组织为:

.
└── test
    ├── a
    │   └── a.js
    ├── b
    │   └── b.js
    ├── common.js
    └── top.js

top.js

function importTest(name, path) {
    describe(name, function () {
        require(path);
    });
}

var common = require("./common");

describe("top", function () {
    beforeEach(function () {
       console.log("running something before each test");
    });
    importTest("a", './a/a');
    importTest("b", './b/b');
    after(function () {
        console.log("after all tests");
    });
});

importTest功能只是说明如何处理导入多个模块的重复而不必describe(... require...每次都重新键入整个内容。该common模块旨在容纳您需要在测试套件的多个模块中使用的模块。我实际上并没有使用它,top但是如果需要的话,可以在其中使用它。

我将在此处指出,beforeEach在每次注册每个测试之前,它们将运行其代码,it无论它们出现在describein中top还是出现在
任何导入的模块中
。使用--recursive,必须将beforeEach代码复制到每个模块中,或者您可能beforeEach在每个模块中都有一个钩子,以调用从公共模块导入的函数。

同样,该after挂钩将在套件中的 所有
测试之后运行。无法使用复制--recursive。如果您使用--recursive并将代码添加after到每个模块,则每个模块将执行一次,而不是
整个 测试一次。

top使用不能复制所有测试出现在单个标题下的内容--recursive。随着--recursive每个文件可以有describe("top",但是这将创建一个新的top为每个文件标题。

common.js

var chai = require("chai");

var options = {
    foo: "foo"
};

exports.options = options;
exports.chai = chai;
exports.assert = chai.assert;

在某些测试套件中,我使用了类似这样的 模块,common避免重复执行require一堆操作,并保留不保持状态的全局 只读
变量或函数。我不global想像thgaskell的回答那样污染对象,因为该对象是真正的全局对象,即使在您的代码可能正在加载的第三方库中也可以访问。我在代码中发现这不是可接受的。

a/a.js

var common = require("../common");
var options = common.options;
var assert = common.assert;

it("blah a", function () {
    console.log(options.foo);
    assert.isTrue(false);
});

b/b.js

it("blah b", function () {});


 类似资料:
  • 我想从1中得到一个变量。将js文件复制到另一个。js文件。现在我有主要的问题。js 我有平衡感。js 我得到了错误 常量余额=需要(“./余额”); ReferenceError:未定义require 我通过windows PowerShell运行此代码,节点版本为:v14。10.1

  • 问题内容: 我如何让multer接受来自多个文件类型字段的文件? 我有以下代码,使用node.js中的multer上传单个文件: 通过以下形式,在仅视频字段具有值的条件下(如果同时指定两个字段,则会出现“意外字段”错误): 从文档中不清楚该如何处理?任何建议,将不胜感激。顺便说一句,我尝试了以下参数变体,但没有成功: 问题答案: 您想要的是:

  • 问题内容: 我正在尝试使用多个线程在Java中编写一个大文件。 我已经尝试了Java 和类。 实际上,要写入的内容是使用和写入的整个表(Postgres)。文件中的每一行都是表中的一个元组,我一次要写100行。 编写方法: 单个待写入文件由附加模式下的多个线程打开。此后,每个线程都尝试写入文件文件。 以下是我面临的问题: 有时,文件的内容将被覆盖,即:一行仍然不完整,而下一行从那里开始。我的假设是

  • 问题内容: 我是新手,想知道有关从一台服务器导入文件到另一台服务器的信息。我尝试了以下命令,它对我来说很好用。现在,我想知道当有多个文件时,如何一次导入所有文件。我找不到任何相关的文档,这是不可能的。请帮助我,这可能吗? 问题答案: 您总是可以编写一些shell脚本。

  • 我正在尝试读取多个excel文件,并将每个文件中的数据附加到一个主文件中。每个文件都有相同的标题(因此我可以跳过导入初始文件后的第一行)。 我对Python和OpenPyXL模块都很陌生。我可以毫无问题地导入第一个工作簿。当我需要打开后续文件并复制数据以粘贴到原始工作表中时,我的问题就出现了。 到目前为止,这是我的代码: 谢谢!

  • 我有文件1。csv,包含列id、名称、年龄。File2.csv具有列id和名称。在这两个文件中,ID引用相同的值,并且是唯一的。示例数据文件1。csv 文件2.csv Spring批处理应同时读取文件,合并数据并写入DB,如下所示 如何在spring batch中同时读取2个文件?