栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

如果你想包含多个模块 您的

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
无论它们出现在
describe
in中
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 () {});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436525.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号