如何使 ChaiJS 'expect' 函数在 NodeJS 'test'文件夹内的所有文件中可用?



我正在使用Truffle,默认情况下包含Mocha & Chai。

文件树:

├── test
│   ├── ManagedWallet.js
│   ├── AnotherTest.js
│   └── AndAnotherTest.js
└── truffle.js

这是我的测试文件之一:

var expect = require('chai').expect;
var managedWallet = artifacts.require("./ManagedWallet.sol");
contract('ManagedWallet', function(accounts) {
it("belongs to customer's account address", async function(){
var contract         = await managedWallet.deployed();
var customer_account = accounts[1];
var owner            = await contract.owner.call();
expect(owner).to.equal(customer_account);
});
});

由于test文件夹中有很多测试文件,因此我需要将该var expect = require('chai').expect;行放在所有测试文件中。

有没有办法使该expect功能全局可用,而无需我在所有测试文件中都有该var expect = require('chai').expect;行?

我尝试将var expect = require('chai').expect;行放入松露.js文件(module.exports上方),但它不起作用,并且在运行测试时出现ReferenceError: expect is not defined错误。

我的松露.js文件示例(位于项目的根文件夹中):

module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 7545,
network_id: "*" // match any network
}
}
};

这是我.mocharc.json文件,可以实现此功能:

{
"spec": "src/**/*.test.ts",
"require": ["esm", "ts-node/register", "chai/register-assert", "chai/register-expect", "chai/register-should"],
"file": "./test-setup.cjs",
"recursive": true
}

我从GitHub得到了答案(谢谢@keithamus)。

require('chai/register-expect');
//... rest of code
expect(...)

我的松露.js看起来像:

require('chai/register-expect');
module.exports = {
// the truffle configs
}

而且,在我的测试文件中使用expect不再抛出任何错误。

最新更新