TypeError: дескриптор раунда свойств не настраивается и не доступен для записи — смарт-контракты

У меня есть несколько облачных функций для моих контрактов, и я пытаюсь создать несколько модульных тестов, используя sinon. Однако у меня возникают проблемы при попытке смоделировать некоторые облака функций. Я хочу просто заглушить их, а внутри методов я назвал некоторые свойства смарт-контрактов и хочу, чтобы они возвращали указанное значение. Для того, чтобы понять, что я делаю, вот фрагмент кода контракта (частичный):

      contract RoundOracle is Ownable, AccessControl, Pausable {
    uint8 public round; // Starts from 1. Updated after each round has finished.

    uint8 public constant START = 0;
    uint8 public constant END = 1;

    event LogSetRoundBounds(uint8 round, uint256 startRound, uint256 endRound);

    constructor() {
        round = 1;
    }
}

Затем я хочу заглушить это свойство и утверждать, что его значение равно 2, это дает мне вышеупомянутую ошибку. Вот код:

      describe("NFT Rounds Test", () => {
    context("NFT Rounds positive testing", () => {
        before(function () {
            initializeENV();
        });
    
        after(function () {
            sandbox.restore();
        });

        it.only("Test the web3 calls", async() => {
            console.log("hit b4 web3");
            var web = Web3.getInstance();
            console.log("hit after web3")

            var newSandbox = sinon.createSandbox();
            newSandbox.stub(web.roundOracle, "round").value(2);
            expect(web.roundOracle.round).to.equal(2, "not equal to 2");
            
            console.log("finally passed this stubbing ---");
        });
    });
});

Я понимаю, что это связано с тем, что свойство недоступно для записи, но можно ли как-то протестировать такие сценарии, даже если они не доступны для записи или настройки?

0 ответов

Другие вопросы по тегам