Corda-transaction.fails()在运行测试时不工作
我对科尔达很陌生。 transaction.fails()在运行测试时不工作 ----代码--- ---在测试用例中--Corda-transaction.fails()在运行测试时不工作,corda,Corda,我对科尔达很陌生。 transaction.fails()在运行测试时不工作 ----代码--- ---在测试用例中-- 正如预期的那样,该测试将通过 调用tx.fails()意味着给定事务的当前状态,调用verify方法应至少为该事务的一个契约抛出异常。如果没有,则tx.fails()将抛出异常,导致测试失败 在您的情况下,调用TokenContract的verify方法将引发异常,因为事务有输入,导致该契约引发异常tx.fails()不会引发异常,您的测试将通过 另外,您不应该直接在veri
正如预期的那样,该测试将通过 调用
tx.fails()
意味着给定事务的当前状态,调用verify
方法应至少为该事务的一个契约抛出异常。如果没有,则tx.fails()
将抛出异常,导致测试失败
在您的情况下,调用TokenContract
的verify
方法将引发异常,因为事务有输入,导致该契约引发异常<因此,code>tx.fails()不会引发异常,您的测试将通过
另外,您不应该直接在verify
中使用测试类,例如TestIdentity
和MockServices
@Override
public void verify(LedgerTransaction tx) throws IllegalArgumentException {
Command command = tx.getCommand(0);
private final TestIdentity alice = new TestIdentity(new CordaX500Name("Alice", "", "GB"));
private final TestIdentity bob = new TestIdentity(new CordaX500Name("Bob", "", "GB"));
private MockServices ledgerServices = new MockServices(new TestIdentity(new CordaX500Name("TestId", "", "GB")));
private TokenState tokenState = new TokenState(alice.getParty(), bob.getParty(), 1);
if (tx.getInputStates().size() != 0) {
System.out.println(" -- Checking Input Size -- ");
throw new IllegalArgumentException(" Transaction Must have No Inputs ");
}
}
@Test
public void tokenContractRequiresZeroInputsInTheTransaction() {
transaction(ledgerServices, tx -> {
//Has an input, will fail.
tx.input(TokenContract.ID, tokenState);
tx.output(TokenContract.ID, tokenState);
tx.command(alice.getPublicKey(), new TokenContract.Commands.Issue());
tx.fails();
return null;
});