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 ---");
});
});
});
Я понимаю, что это связано с тем, что свойство недоступно для записи, но можно ли как-то протестировать такие сценарии, даже если они не доступны для записи или настройки?