我使用的是Dapple (http://dapple.readthedocs.io),特别是测试框架。我有以下合同
contract App {
bytes1 public myVar;
function App() {
myVar = 0x01;
}
}和下面的测试
function test() {
bytes1 variable1 = App(proxy_tester).myVar();
bytes1 a = 0x01;
assertEq1(variable1, a);
}我希望这个测试能够通过,但是它失败了
| Error: Wrong `bytes1' value
| Expected: 0x01
| Actual: 0xc6我认为0xc6只是内存中的一个随机值,或者是0x01的错误编码。
注意: dapple不是在块链中运行,而是直接在虚拟机中运行。我在块菌中尝试了这段代码,它的工作原理和预期一样。
发布于 2016-11-02 17:10:38
首先,我假设您有一个本地App和一个类似于以下内容的setUp函数:
App app;
function setUp() {
app = new App();
proxy_actor._target(app);
}这几乎是可行的,但他在这里的问题是,由于某些EVM违禁品,代理参与者不能返回值。这只是为了嘲笑发送者。理想情况下,它还将代理返回值,但是有一些EVM约束不允许这样做。
在这种情况下,返回值根本不依赖于发送方,因此您可以直接测试它(发送方将是test契约,而不是代理参与者):
function test() {
bytes1 variable1 = app.myVar();
bytes1 a = 0x01;
assertEq1(variable1, a);
}https://ethereum.stackexchange.com/questions/9084
复制相似问题