Я использую Embark для проверки смарт-контракта на прочность. Тесты написаны с использованием assert. Все тесты пройдены, когда я использую «Запустить тест». Но некоторые тесты не выполняются, когда я тестирую с использованием 'embark test --coverage'. Я не понимаю, почему использование «--coverage» приводит к сбою тестов. Чтобы быть более точным, провальный тест выдает ошибку, говорящую «[имя] не является функцией», тогда как в отчете о покрытии это та же самая функция, которая, как показано, не была доступна для теста.
код солидности (только функции)
function addTranscriptHash(address _transcriptOwner,bytes32 _transcriptHash) public onlyOwner {
transcript[_transcriptOwner] = _transcriptHash;
}
function viewTranscript() public view returns(bytes32) {
require(transcript[msg.sender] != bytes32(0), "transcript does not exist");
return transcript[msg.sender];
}
function isTranscriptAuthentic(address _transcriptOwner, bytes32 _transcriptHash) public view onlyAuthentic(_transcriptOwner,_transcriptHash) returns(bool) {
return true;
}
тестовый код, который не работает
it("Owner adds transcript hash", async function () {
await transcriptVerification.methods.addTranscriptHash(accounts[2], _transcriptHash).send();
let result = await transcriptVerification.methods.viewTranscript().call({from:accounts[2]});
assert.deepStrictEqual(result,_transcriptHash);
})
it("student views transcript successfully", async function () {
let transcript = await transcriptVerification.methods.viewTranscript().call({from:accounts[2]});
assert.ok(transcript);
})
it("student's transcript does not exist", async function () {
try{
await transcriptVerification.methods.viewTranscript().call({from:accounts[1]});
}
catch(error){
assert(error.message.includes("transcript does not exist"));
}
})
Ниже приведен результат 'запуска теста --coverage'
1) transcriptVerification
Owner adds transcript hash:
TypeError: transcriptVerification.methods.viewTranscript is not a function
at Context.<anonymous> (test/contract_spec.js:31:55)
at process._tickCallback (internal/process/next_tick.js:68:7)
2) transcriptVerification
student views transcript successfully:
TypeError: transcriptVerification.methods.viewTranscript is not a function
at Context.<anonymous> (test/contract_spec.js:46:59)
3) transcriptVerification
student's transcript does not exit:
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert(error.message.includes("transcript does not exist"))
+ expected - actual
-false
+true
at Context.<anonymous> (test/contract_spec.js:55:9)