Балерина - ошибка при запуске фиктивных тестов
ОБНОВЛЕНО
Привет я пишу тестовую функцию в балерина следующим образом (в пакет уведомлений).
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, чтобы он работал.