【问题标题】:Test failure when mocking nil result模拟 nil 结果时测试失败
【发布时间】:2021-10-16 01:20:32
【问题描述】:

在尝试运行模拟 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

【问题讨论】:

    标签: ballerina


    【解决方案1】:
    test:when(mockF2).thenReturn(());
    

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

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

    你需要定义如下的'mockNilReturn'函数。

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

    【讨论】:

      猜你喜欢
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2020-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多