Кто-нибудь знает, почему я получаю разные результаты тестов с помощью 'embark test' и 'embark test --coverage' - PullRequest
0 голосов
/ 06 июня 2019

Я использую 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)
...