Corda - транзакция.fails () не работает во время выполнения теста - PullRequest
0 голосов
/ 26 декабря 2018

Я очень новичок в Корде.транзакция не работает во время выполнения теста

---- код ---

@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;                                                         
});                                                                             

1 Ответ

0 голосов
/ 03 января 2019

Этот тест пройдет, как и ожидалось.

Вызов tx.fails() означает, что при текущей транзакции вызов метода verify должен вызвать исключение хотя бы для одной из транзакций.контракты.Если этого не произойдет, tx.fails() вызовет исключение, что приведет к сбою теста.

В вашем случае вызов метода verify вашего TokenContract вызовет исключение, поскольку транзакция имеетввод, в результате чего контракт выдает исключение.tx.fails() поэтому не сгенерирует исключение, и ваш тест пройдет.

PS Не следует использовать классы тестирования, такие как TestIdentity и MockServices, непосредственно внутри verify.

...