芭蕾舞演员 - 运行模拟测试时出错



>更新

嗨,我正在用芭蕾舞演员编写一个测试函数,如下所示(在包通知中(。

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");
}   

我在与 notificationtest.bal 文件相同的包中的另一个文件中有实际的函数 getMissingCount。但是当我通过执行以下命令运行测试时

ballerina test notifications

实际的getMissingCount函数被调用,而不是模拟函数。有没有人知道为什么会发生这种情况?解决方法是什么。

我认为这里的问题是当您运行依赖于某些封闭包级函数的测试时,您必须在包级别运行测试。

例如,在上述情况下,如果您的软件包名称是foo并且您拥有所有 ballerina源文件,这些文件也具有测试用例,如上例所示,那么您必须以ballerina test foo方式运行测试,这将执行在软件包中找到的测试foo.

使用ballerina test <bal-file>会将 bal 文件视为单个实体,并且它不会知道您的封闭包/项目。因此,在这种情况下,您可能必须将所有函数放在同一个 bal 文件中才能使其正常工作。

参考这个 - 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");
}

我没有运行上述操作。但请尝试。

最新更新