Балерина - ошибка при запуске фиктивных тестов

ОБНОВЛЕНО

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

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 в другом файле в том же пакете, что и файл messagestest.bal. Однако, когда я запускаю тесты, выполняя

ballerina test notifications

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

2 ответа

Решение

Порекомендуйте это - 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");
}

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

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

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

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

Другие вопросы по тегам