2016-12-21 16 views
1

私は2つの契約を結んで、1つのファイルにSum.solという名前で書き込みます。総額契約で契約を追加します。私は、クロス・コントラクトの呼び出しをテストしたいだけです。私が2つの契約を1つのファイルに入れなかった場合、トリュフを使った合計のコンパイルは失敗します。しかし、私がテストをすると、結果はとても奇妙です。これがどうして起こったのか分かりません。トリュフを使用して契約交渉でスマート契約をテストする方法は?

pragma solidity ^0.4.6; 
contract Add{ 
    function sum(uint x, uint y) returns(uint){ 
    return x+y; 
    } 
} 
contract Sum{ 
    function func(uint x, uint y) returns(uint){ 
    Add add = new Add(); 
    uint re = add.sum(x,y); 
    return re; 
    } 
} 

が、私は

contract('Sum', function(accounts) { 
    it("should return 5 when add 2 and 3", function() { 
    var sum = Sum.deployed(); 

    return sum.func.call(2,3).then(function(res){ 
     assert.equal(res.valueOf(), 5, "add result is 5"); 

    }); 
    }); 
}); 

トリュフではそのためのテストを書いて、トリュフを使用してテスト、そして、結果は次のとおりです。

Compiling Sum.sol... 


    Contract: Sum 
    1) should return 5 when add 2 and 3 
    > No events were emitted 


    0 passing (455ms) 
    1 failing 

    1) Contract: Sum should return 5 when add 2 and 3: 
    AssertionError: add result is 5: expected '9.1735649321334958107552852973512799782292704141468709142420585807991067901952e+76' to equal 5 
     at /Users/maiffany/testcoverage/test/add.js:6:14 
     at process._tickDomainCallback   (internal/process/next_tick.js:129:7) 
+0

私はあなたのテストは、次のコードを使用して渡しました – hxmmm

答えて

0

私はなぜあなたのテストわからないんだけど3ヶ月前にはtestrpcとtruffleの両方が大きく変わったので、動作しませんでした。現在の状態では、Sum.deployed()が約束を返すので(あなたは直接関数を呼び出すことはできません)、テストは失敗します。これはテスト-RPCエラーがある

var Sum = artifacts.require("./Sum.sol"); 

contract('Sum', function(accounts) { 
    it("should return 5 when add 2 and 3", function() { 
    Sum.deployed().then(function(instance){ 
     instance.func.call(2,3).then(function(res){ 
     assert.equal(res.valueOf(), 5, "add result is 5"); 
     }); 
    }); 
    }); 
}) 
関連する問題