首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的任务在Dapple中不起作用。

简单的任务在Dapple中不起作用。
EN

Ethereum用户
提问于 2016-10-07 09:38:01
回答 1查看 110关注 0票数 5

我使用的是Dapple (http://dapple.readthedocs.io),特别是测试框架。我有以下合同

代码语言:javascript
复制
contract App {
  bytes1 public myVar;
  function App() {
    myVar = 0x01;
  }
}

和下面的测试

代码语言:javascript
复制
function test() {
  bytes1 variable1 = App(proxy_tester).myVar();
  bytes1 a = 0x01;
  assertEq1(variable1, a);
}

我希望这个测试能够通过,但是它失败了

代码语言:javascript
复制
| Error: Wrong `bytes1' value
|   Expected: 0x01
|     Actual: 0xc6

我认为0xc6只是内存中的一个随机值,或者是0x01的错误编码。

我做错什么了?

注意: dapple不是在块链中运行,而是直接在虚拟机中运行。我在块菌中尝试了这段代码,它的工作原理和预期一样。

EN

回答 1

Ethereum用户

发布于 2016-11-02 17:10:38

首先,我假设您有一个本地App和一个类似于以下内容的setUp函数:

代码语言:javascript
复制
App app;
function setUp() {
    app = new App();
    proxy_actor._target(app);
}

这几乎是可行的,但他在这里的问题是,由于某些EVM违禁品,代理参与者不能返回值。这只是为了嘲笑发送者。理想情况下,它还将代理返回值,但是有一些EVM约束不允许这样做。

在这种情况下,返回值根本不依赖于发送方,因此您可以直接测试它(发送方将是test契约,而不是代理参与者):

代码语言:javascript
复制
function test() {
  bytes1 variable1 = app.myVar();
  bytes1 a = 0x01;
  assertEq1(variable1, a);
}
票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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