Балерина - ошибка при запуске фиктивных тестов - PullRequest
0 голосов
/ 02 октября 2018

ОБНОВЛЕНО

Привет Я пишу тестовую функцию в балерина следующим образом (в уведомлениях пакета).

import ballerina/test;
import ballerina/io;

@test:Mock {
    packageName: "notifications",
    functionName: "getMissingIds"
}
function mockGetMissingCount() returns (int) {
    int count = 3;

    return count;
}

@test:Config
function testAssertArrayEquals() {
    int answer = 0;
    string[] expectedResult = 3;
    string[] actualResult = getMissingCount();
    io:println("Function mocking test");
    test:assertEquals(actualResult, expectedResult, msg = "function mocking failed");
}   

У меня есть фактическая функция getMissingCount вдругой файл в том же пакете, что и файлtesttest.bal.Однако когда я запускаю тесты, выполняя

ballerina test notifications

, вместо функции-макета вызывается настоящая функция getMissingCount.У кого-нибудь есть идея относительно того, почему это происходит?Что бы обойти.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

См. Это - https://ballerina.io/learn/by-example/testerina-function-mocks.html. В вашей фиктивной функции отсутствует аннотация @test:Mock.Также вам нужно указать имя пакета в аннотации @test:Mock.

// Mock 'getMissingIds' function of 'notifications' package.
@test:Mock {
    packageName: "notifications",
    functionName: "getMissingIds"
}
function mockGetMissingCount() returns (int) {
    int count = 3;
    return count;
}

@test:Config
function testAssertArrayEquals() {
    int answer = 0;
    string[] expectedResult = 3;
    string[] actualResult = getMissingCount();
    io:println("Function mocking test");
    test:assertEquals(actualResult, expectedResult, msg = "function mocking failed");
}

Я не запускал вышеописанное.Но, пожалуйста, попробуйте.

0 голосов
/ 02 октября 2018

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

Например, в приведенном выше случае, если ваше имя пакета foo и в нем у вас есть все исходные файлы ballerina, в которых также есть тестовые примеры, как в приведенном выше примере, тогда вы должны запустить тест как ballerina test foo, который будет выполнять тесты, найденные в пакете foo.

Использование ballerina test <bal-file> будет рассматривать bal-файл как единую сущность, и он не будет знать о ваших пакетах / проекте.Так что в этом случае вам, возможно, придется иметь все функции в одном файле bal, чтобы заставить его работать.

...