go - 具有错误行为的模拟功能仍然通过

标签 go testing

我正在为依赖于其他函数的函数编写测试。我用 Gomock库来模拟这些依赖项的行为,这是其中之一:

&mock.UseCaseToDependOn{
    UpdateStatusFuncMock: func(ID data.ID) ([]*ObjectsToReturn, error) {
        return case.in.updateStatusFuncReturnsObjects, case.in.updateStatusFuncReturnsError
    },
},

然而,在代码审查中,我意识到 UpdateStatusFuncMock使用状态机模式的模拟函数根据输入返回不合逻辑的数据,但是,测试仍然很好地通过了。

这对我来说真的很奇怪,因为我相信在这种情况下测试应该失败。

另一方面,如果我提供的数据只是遵循逻辑,那么:
  • 首先,我需要了解我的测试所依赖的函数的内部行为。这是好事还是坏事?
  • 其次,我认为这样做只会产生误报,因为测试仍然通过了具有错误行为的模拟功能。

  • 创建输入输出必须遵守现有逻辑的模拟函数好不好?

    最佳答案

    首先,区分白盒测试和黑盒测试很重要。
    https://www.geeksforgeeks.org/differences-between-black-box-testing-vs-white-box-testing/

    根据您要执行的操作,请遵循最佳方法,正如前面的评论所说,它是干净的,通常使用假货或 stub 更好。

    您可以创建一组带有返回错误的 stub 测试和另一个带有预期输出的测试。

    关于go - 具有错误行为的模拟功能仍然通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62381193/

    相关文章:

    angularjs - Golang 连接到 angularjs

    go - "undefined: beego in beego.AppConfig"- 如何获取Beego配置参数

    java - solo.finishOpenActivities() 始终为空

    ruby-on-rails - 期望输入结束的语法错误

    sql-server - 质量检测数据

    ruby - 如何以 rspec 方式改进此 RSpec 代码?

    xml - Go:将不同类型的数组/slice 编码到 XML

    ubuntu - 获取连接拒绝 tcp 连接 SysLog Golang

    go - 从 map 值追加 slice 不会影响 map

    unit-testing - 生产中的 NJasmine