Модульное тестирование Hyperledger composer с использованием Cucumber. TypeError: Не удается прочитать свойство getClassDeclaration со значением null

Я использую огурец для запуска некоторых модульных тестов на компоновщике гиперледжера. Я постоянно получаю это TypeError: Cannot read property 'getClassDeclaration' of null

КОД АКТИВА

asset Clicks identified by id {
  o String id
  o String ipAddress
  o String publisherId
  o String advertiserId
  o String CreatedAt
}

КОД ТРАНЗАКЦИИ

transaction Clicks_Add 
{
  o Clicks clicks
}

КОД ТРАНЗАКЦИИ В ФАЙЛЕ .JS

/**
 * transaction
 * @param {org.adverce.Clicks_Add} Clicks_Add
 * @transaction
 * This transaction is used to add new users to an already created Advertiser.
 */

function Clicks_Add(newClick) {
    var factory = getFactory();
    var NS='org.adverce';
    var clicks = factory.newResource(NS,'Clicks',newClick.clicks.id);
    clicks.ipAddress = newClick.clicks.ipAddress;
    clicks.publisherId = newClick.clicks.publisherId;
    clicks.advertiserId = newClick.clicks.advertiserId;
    clicks.CreatedAt = newClick.clicks.CreatedAt;

    return getAssetRegistry('org.adverce.Clicks')
    .then(function(newclicks){
        newclicks.addAll([clicks]);
    })
}

ТЕПЕРЬ ТЕСТ НА ОГУРЦАХ, КОТОРЫЙ Я НАПИСАЛ, ВОТ ЭТО.

Feature: Want to test the Clicks transactions

  Scenario: Clicks Transaction send value to Clicks Assets

      Given I have deployed my network

      When I submit the following transaction of type org.adverce.Clicks_Add
        | id | ipAddress   | publisherId | advertiserId | CreatedAt |
        | 01 | 192.168.1.1 | 12          | 22           | 27/1/2017 |

      Then I should have the following Assets
       """
        [
        {"$class":"org.adverce.Clicks", "id":"01", "ipAddress":"192.168.1.1", "publisherId":"23", "advertiserId":"22", "CreatedAt":"27,1,2017"}
        ]
        """

МЕТОДЫ, НАПИСАННЫЕ ДЛЯ ЭТИХ ТЕСТОВ

'use strict';


module.exports = function () {

    this.Given('I have deployed my network', function () {  
         // Write code here that turns the phrase above into concrete actions
        });

    this.When(/^I submit the following transactions? of type ([.\w]+)\.(\w+)$/, function (namespace, name, table) {
        return this.composer.submitTransactions(namespace, name, table);
    });

    this.Then(/^I should have the following Assets?$/, function (docString) {
        return this.composer.testAssets(null, null, docString);
        }); 

};

Я также поделюсь скриншотом ошибки здесь.

Вывод ошибки в терминале после запуска теста


person deenario    schedule 13.08.2018    source источник


Ответы (1)


Я думаю, что основная причина его неудачи заключается в том, что вы не определили, как правильно развернуть сеть - как вы знаете, Composer все равно устанавливает это для вас, если вы посмотрите на пример сетей Composer (например, basic-sample-network ) https://github.com/hyperledger/composer-sample-networks/blob/master/packages/basic-sample-network/features/support/index.js

Для справки пример теста Cucumber (включая добавление ресурса) в «базовой сети-образце» находится здесь -> https://github.com/hyperledger/composer/blob/master/packages/composer-cucumber-steps/test/composer.js#L73 и

наконец, примеры отправки транзакций (еще одна примерная сеть) здесь -> https://github.com/hyperledger/composer-sample-networks/blob/master/packages/fund-clearing-network/features/1.SubmitTransferRequests.feature

person Paul O'Mahony    schedule 13.08.2018