Nethereum C#单元测试GetTransactionCount

时间:2018-01-17 12:38:51

标签: c# unit-testing ethereum

Nethereum使用Async方法获取地址的Out-File

我已将该方法放入异步任务中:

TransactionCount

尝试用...进行测试。

public  async Task<object>  GetTxCount(string address)
{
  return await web3.Eth.Transactions.GetTransactionCount.SendRequestAsync(address).ConfigureAwait(false);
}

如何从单元测试中调用[TestMethod] public async Task TestMethodAsync() { string address = "0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae"; EthTest.Eth et = new EthTest.Eth(); var encoded = et.GetTxCount(address); encoded.Wait(); } 以获得实际结果。

我已经使用了“wait”命令,即使不推荐它,但仍然无法让它返回结果。

单元测试爆炸 - 它甚至没有击中Nethereum所称的API。

1 个答案:

答案 0 :(得分:2)

您已经使测试异步,然后使用等待调用GetTxCount

一直使用async
[TestMethod]
public async Task TestMethodAsync() {
    string address = "0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae";
    var et = new EthTest.Eth();
    var encoded = await et.GetTxCount(address);
}

鉴于GetTxCount刚刚返回任务,那么确实没有必要在方法中等待它。

重构为

public Task<HexBigInteger>  GetTxCount(string address) {
    return  web3.Eth.Transactions.GetTransactionCount.SendRequestAsync(address);
}

public async Task<HexBigInteger>  GetTxCount(string address) {
    var result = await web3.Eth.Transactions.GetTransactionCount.SendRequestAsync(address).ConfigureAwait(false);
    return result.
}

参考Async/Await - Best Practices in Asynchronous Programming