ballerina - 模拟 nil 结果时测试失败

标签 ballerina

当尝试运行模拟 nil 返回值的测试时,出现以下错误。 有什么想法吗?

function f1() returns string?|error {
    return f2();
}

function f2() returns string?|error {
    return "done";
}

// --tests
import ballerina/test;

@test:Mock {
    functionName: "f2"
}
test:MockFunction mockF2 = new;

@test:Config
function shouldReturnNil() {
    // arrange
    test:when(mockF2).thenReturn(());

    // act
    string?|error result = f1();

    // assert
    if result is error {
        test:assertFail(string `Expected nil, got error ${result.message()}`);
    } else if result is string {
        test:assertFail(string `Expected nil, got string ${result}`);
    }
}

Error:
Running Tests
        hello
                [fail] shouldReturnNil:
                    {ballerina}TypeCastError {"message":"incompatible types: 'error' cannot be cast to '(any|ballerina/test:0.8.0:Error)'"}
                        at ballerina.test.0_8_0:mockHandler(mock.bal:378)
                        ppp.hello.0_1_0:f1(main.bal:2)
                        ppp.hello.0_1_0.tests.main_test:shouldReturnNil(tests/main_test.bal:14)
0 passing
1 failing
0 skipped

最佳答案

test:when(mockF2).thenReturn(());

不适用于“()”值。如果需要返回一个nil值,需要使用下面的方法。

test:when(mockF2).call("mockNilReturn");

您需要按如下方式定义“mockNilReturn”函数。

function mockNilReturn() returns string?|error {
    return ();
}

关于ballerina - 模拟 nil 结果时测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68761338/

相关文章:

ballerina - Ballerina 中的final 和const 有什么区别?

visual-studio-code - 如何在 vscode 中创建 Ballerina Integrator 项目?

ballerina - 如何为芭蕾舞 Actor 设置http代理?

ballerina - 有没有办法在代码中从 Ballerina.toml(组织、名称或版本)访问包信息?

xml - Ballerina 深度相等检查对于相似的 XML 值返回 false

serialization - 如何将 Ballerina 记录值序列化到 `byte[]` 或从 0x104567910 反序列化?

websocket - 如何在 WebSocket 中代理到多个服务器

ballerina - 如何在 ballerina lang 中进行字符串填充

syntax - Ballerina 中箭头 -> 运算符的作用是什么?

sql - 使用 postgresql 创建记录时出现编译时错误 :jsonvalue type in Ballerina