芭蕾舞女演员 - 运行 模拟测试时出错
Ballerina - error when running mock tests
已更新
你好,我正在 ballerina 中编写一个测试函数,如下所示(在包通知中)。
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 文件视为单个实体,它不会知道您的封闭 packages/project。因此,在那种情况下,您可能必须将所有函数都放在同一个 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");
}
以上我没有运行。但请尝试。
已更新
你好,我正在 ballerina 中编写一个测试函数,如下所示(在包通知中)。
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 文件视为单个实体,它不会知道您的封闭 packages/project。因此,在那种情况下,您可能必须将所有函数都放在同一个 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");
}
以上我没有运行。但请尝试。