首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在测试中设置msg.sender

在测试中设置msg.sender
EN

Ethereum用户
提问于 2021-06-03 19:53:37
回答 1查看 545关注 0票数 1

我有一个可靠的函数来操纵一个物体。该函数只允许对调用方msg.sender的此操作进行操作,该对象是该对象的所有者。就像这样:

代码语言:javascript
复制
function Manipulate(uint i)
{
     require(msg.sender == data[i].owner, "Sender is not owner.");
     <manipulate object>;
}

在我正在编写的测试中,我正在创建一个测试用例,以检查该函数是否按照预期的方式运行。我有两个用户帐户:

代码语言:javascript
复制
user1 = accounts[0];
user2 = accounts[1];

user2是我想要操作的对象的所有者。我在考试中打了以下电话:

代码语言:javascript
复制
await instance.Manipulate.call(10, {from: user2});

与我所期望的相反,这触发了对我的坚实功能的要求声明。因此,它声称msg.sender不同于所有者。我在Require语句中修改了字符串,以便它还打印msg.sender和我想要操作的对象的所有者。我看到的是user2确实是对象的所有者。然而,msg.sender不是user2,而是user1。这是很奇怪的,因为我用{from: user2}调用操作符()函数。所以我不明白为什么user1是msg.sender。

有人知道为什么user1是msg.sender,为什么{from: user2}语句没有使user2成为msg.sender?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2021-06-03 20:10:08

在require语句中将"=“改为"==”:require(msg.sender == data[i].owner, "Sender is not owner.");

票数 3
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/100267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档