Solidity, Mocha AssertionError: Unspecified AssertionError
Solidity, Mocha AssertionError: Unspecified AssertionError
我正在学习如何使用 mocha 对 solidity 代码进行单元测试,我从简单的代码中得到了这个错误:
contract hello{
function returnString() public pure returns(string memory){
return "this";
}
}
在没有 try/catch 的情况下进行测试时:
const Hello = artifacts.require('hello');
contract('hello', () => {
it('should return string', async () => {
const hello = await Hello.deployed();
const result = hello.returnString();
assert(result == "this");
});
});
我收到这个错误:
Contract: hello
1) should return string
> No events were emitted
0 passing (291ms)
1 failing
1) Contract: hello
should return string:
AssertionError: Unspecified AssertionError
at Context.<anonymous> (test/Hello.js:15:3)
at processTicksAndRejections (node:internal/process/task_queues:94:5)
但是当我用 try/catch":
测试它时
const Hello = artifacts.require('hello');
contract('hello', () => {
it('should return string', async () => {
const hello = await Hello.deployed();
const result = hello.returnString();
try {
assert(result === "this");
}
catch (e){
console.log(e);
}
});
});
我得到这个:(✓ should return string
是绿色的,意味着它通过了测试)
Contract: hello
AssertionError: Unspecified AssertionError
at Context.<anonymous> (/home/kaneda/Documents/learn/testing/contract_1/test/Hello.js:18:4)
at processTicksAndRejections (node:internal/process/task_queues:94:5) {
showDiff: false,
actual: null,
expected: undefined
}
✓ should return string
1 passing (143ms)
那么,这是什么行为,它实际上通过了测试但抛出错误还是什么?我有点糊涂了。
哦,愚蠢的错误,我在
中的hello.returnString()
之前忘记了await
const result = hello.returnString();
这解释了代码失败的原因,但我仍然不理解 try/catch 行为。
我正在学习如何使用 mocha 对 solidity 代码进行单元测试,我从简单的代码中得到了这个错误:
contract hello{
function returnString() public pure returns(string memory){
return "this";
}
}
在没有 try/catch 的情况下进行测试时:
const Hello = artifacts.require('hello');
contract('hello', () => {
it('should return string', async () => {
const hello = await Hello.deployed();
const result = hello.returnString();
assert(result == "this");
});
});
我收到这个错误:
Contract: hello
1) should return string
> No events were emitted
0 passing (291ms)
1 failing
1) Contract: hello
should return string:
AssertionError: Unspecified AssertionError
at Context.<anonymous> (test/Hello.js:15:3)
at processTicksAndRejections (node:internal/process/task_queues:94:5)
但是当我用 try/catch":
测试它时const Hello = artifacts.require('hello');
contract('hello', () => {
it('should return string', async () => {
const hello = await Hello.deployed();
const result = hello.returnString();
try {
assert(result === "this");
}
catch (e){
console.log(e);
}
});
});
我得到这个:(✓ should return string
是绿色的,意味着它通过了测试)
Contract: hello
AssertionError: Unspecified AssertionError
at Context.<anonymous> (/home/kaneda/Documents/learn/testing/contract_1/test/Hello.js:18:4)
at processTicksAndRejections (node:internal/process/task_queues:94:5) {
showDiff: false,
actual: null,
expected: undefined
}
✓ should return string
1 passing (143ms)
那么,这是什么行为,它实际上通过了测试但抛出错误还是什么?我有点糊涂了。
哦,愚蠢的错误,我在
中的hello.returnString()
之前忘记了await
const result = hello.returnString();
这解释了代码失败的原因,但我仍然不理解 try/catch 行为。