Как перехватить транзакции при тестировании с использованием Mocha - PullRequest
0 голосов
/ 04 июня 2018

Я нахожусь в процессе написания модульных / поведенческих тестов с использованием Mocha для конкретного случая использования блокчейн-сети.Исходя из того, что я вижу, эти тесты не затрагивают фактическую структуру, иными словами, они, кажется, выполняются в некоторой имитируемой среде.Я не вижу ни одной из транзакций, которые имели место как часть теста.Может кто-нибудь сказать мне, возможно ли каким-то образом захватить транзакции, которые происходят в рамках тестов Mocha?

Начальная часть моего кода ниже:

describe('A Network', () => {
// In-memory card store for testing so cards are not persisted to the file system
const cardStore = require('composer-common').NetworkCardStoreManager.getCardStore( { type: 'composer-wallet-inmemory' } );
let adminConnection;
let businessNetworkConnection;
let businessNetworkDefinition;
let businessNetworkName;
let factory;
//let clock;
// Embedded connection used for local testing
const connectionProfile = {
    name: 'hlfv1',
    'x-type': 'hlfv1',
    'version': '1.0.0'
};
before(async () => {

    // Generate certificates for use with the embedded connection
    const credentials = CertificateUtil.generate({ commonName: 'admin' });

    // PeerAdmin identity used with the admin connection to deploy business networks
    const deployerMetadata = {
        version: 1,
        userName: 'PeerAdmin',
        roles: [ 'PeerAdmin', 'ChannelAdmin' ]
    };
    const deployerCard = new IdCard(deployerMetadata, connectionProfile);
    console.log("line 63")
    const deployerCardName = 'PeerAdmin';
    deployerCard.setCredentials(credentials);
    console.log("line 65")
    // setup admin connection
    adminConnection = new AdminConnection({ cardStore: cardStore });
    console.log("line 69")

    await adminConnection.importCard(deployerCardName, deployerCard);
    console.log("line 70")
    await adminConnection.connect(deployerCardName);
    console.log("line 71")
});

Ранее мое соединениепрофиль использовал встроенный режим, который я изменил на hlfv1, посмотрев на ответ ниже.Теперь я получаю сообщение об ошибке: Error: the string "Failed to import identity. Error: Client.createUser parameter 'opts mspid' is required." was thrown, throw an Error :).Это исходит от
await adminConnection.importCard(deployerCardName, deployerCard);.Может кто-нибудь, пожалуйста, скажите мне, что нужно изменить.Любая документация / ресурс будут полезны.

1 Ответ

0 голосов
/ 04 июня 2018

Да, вы можете использовать настоящую ткань.Это означает, что вы можете взаимодействовать с созданными транзакциями, используя вашу тестовую среду или другие средства, такие как REST или Playground и т. Д.

В собственной настройке теста Composer опция для тестирования в среде hlfv1 Fabric используется вего настройка (т. е. хотите ли вы использовать встроенный, веб-интерфейс или реальный Fabric) -> см. https://github.com/hyperledger/composer/blob/master/packages/composer-tests-functional/systest/historian.js#L120

Настройка фиксируется здесь https://github.com/hyperledger/composer/blob/master/packages/composer-tests-functional/systest/testutil.js#L192

Пример настройки необходимых вам артефактовчтобы настроить использование реальной ткани здесь https://github.com/hyperledger/composer/blob/master/packages/composer-tests-functional/systest/testutil.js#L247

Также см. этот блог для получения дополнительных рекомендаций -> https://medium.com/@mrsimonstone/debug-your-blockchain-business-network-using-hyperledger-composer-9bea20b49a74

...