Передача переходных данных между тестом и цепным кодом - PullRequest
0 голосов
/ 07 марта 2019

Из того, что я видел, Fabric не поддерживает тестирование частных коллекций данных с MockStub. Ниже я попытался обойти отсутствие поля transient в MockStub, внедрив MockStub в другую структуру.

Проблема в том, что в коде цепи, хотя я могу извлечь временные данные (stub.GetTransient()), я не могу получить доступ к нужному полю моей карты.

Вот моя структура:

type MockStubWithTransient struct {
    shim.MockStub
    transient map[string]interface{}
}

Тест:

func TestCreatePOI (t *testing.T) {
    fmt.Println("Entering TestCreatePOI")
    stub := NewMockStubWithTransient("{\"poi\":{\"status\":\"unconfirmed\",\"id\":\"123\"}}")
    fmt.Println(stub)
    //  prints: &{{[] 0x158ffc0 mockStub map[] 0xc00014e960 map[]  <nil> <nil>  map[] map[] 0xc0000467e0 map[]} map[poi:map[status:unconfirmed id:123]]}
    // can access stub.transient["poi"]

    result := stub.MockInvoke("001",[][]byte{[]byte("CreatePOI")})
    fmt.Println(result)
}

func NewMockStubWithTransient(transient string) *MockStubWithTransient {
    var tMap map[string]interface{}
    _ := json.Unmarshal([]byte(transient), &tMap)
    s := shim.NewMockStub("mockStub", new(POIChaincode))
    st := &MockStubWithTransient{
        transient: tMap,
        MockStub: *s,
    }

    return st
}

Когда я печатаю stub так, как его видит мой цепной код, я получаю:

&{[[67 114 101 97 116 101 80 114 111 111 102 79 102 73 110 115 117 114 97 110 99 101]] 0x158ffc0 mockStub map[] 0xc00014e960 map[] 001 seconds:1551988379 nanos:68249460  0xc0000c6190  map[] map[] 0xc0000467e0 map[]}

И я могу позвонить stub.GetTransient(), но я получаю map[].

Как я могу заполнить и получить доступ к переходному полю stub, когда stub начинается в тесте?

Я не настроен на этот метод ведения дел, мне просто нужен способ модульного тестирования моего цепного кода, который использует частные коллекции данных. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...