我正在使用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
不再抛出任何错误。