Имитация msg.sender во время модульного теста [дубликат]

В настоящее время я пытаюсь продвинуть свое модульное тестирование далеко, чтобы добиться полного охвата моего кода. Я использую Ownable.solконтракт Open Zepplin и не могу найти в документации что-то о насмешках над пользователем, отправляющим запрос (понимаю msg.sender), используя remix_test.sol.

Кто-нибудь из вас когда-нибудь слышал или делал что-то подобное?

Я думаю, что Ownable был удален в последнем выпуске, потому что он был небезопасным, но я могу ошибаться.

Ответы (1)

Вы можете использовать реальный адрес в качестве msg.sender, здесь вам не нужны насмешки. Пожалуйста, обратитесь к коду модульного тестирования Open Zeppelin для получения дополнительной информации.

https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/test/ownership/Ownable.test.js

Для теста на ремиксе вы можете обратиться к образцу теста из remix ide.

https://github.com/ethereum/remix/blob/master/remix-tests/tests/various_sender/sender_test.sol

Надеюсь, это может помочь!

Привет и спасибо за ваш ответ! Мне кажется, что эти тесты написаны не на remix_tests.sol, а на Mocha. Мне было интересно, есть ли способ записать их, используя только Remix.
Я думаю, что мы можем использовать некоторую учетную запись remix по умолчанию, когда вы выбираете запуск на виртуальной машине Javascript.
Да, но кажется, что вы не можете переключаться во время теста... Поэтому, когда я запускаю, используя, назовем это Aпользователем, предполагается, что контракт принадлежит A. Когда я снова запускаю тест, меняясь на Bпользователя, предполагается, что контракт принадлежит B.
вы можете использовать конкретную учетную запись, подобную этой, из тестового кода образца ремикса github.com/ethereum/remix/blob/master/remix-tests/tests/…
Хм, извините, но я не думаю, что это ответ на мой вопрос... Действительно, это позволяет мне получить существующие тестовые учетные записи, но это не позволяет моему модульному тесту запускать функцию, как если бы я былTestsAccounts.getAccount(1) .