gpt4 book ai didi

unit-testing - (单元)测试驱动开发

转载 作者:行者123 更新时间:2023-12-02 03:43:53 24 4
gpt4 key购买 nike

我对 TDD 还很陌生,在单元测试方面也不是很老练,所以才有这个问题。我有这个用 PHP 编写的遗留函数

function foo(){
x = bar();
y = baz();
if (x > y)
return 'greater';
return 'lesser';
}

如果 x(bar() 返回的值)总是大于 y(baz() 返回的值),我将永远无法测试“较小”的返回语句。

我应该怎么做才能同时覆盖测试用例并达到 100% 的代码覆盖率?将 foo() 重新定义为 foo(x, y) 以用于依赖项注入(inject) Hook 不是遗留代码的选项。

最佳答案

我假设 foobarbaz 都是全局函数。 (如果它们是类的一部分,您希望使用 PHPUnit 的模拟功能)。

我之前写过关于如何使用 pecl 扩展替换内置函数的博客: http://darrendev.blogspot.jp/2012/07/mock-socket-in-php.html

本文展示了一种非常有趣的使用命名空间的替代方法: http://marcelog.github.io/articles/php_mock_global_functions_for_unit_tests_with_phpunit.html

看来您需要将遗留代码包装在一个顶部带有 namespace 声明的文件中。我不知道这对你来说是否是个阻碍。

关于unit-testing - (单元)测试驱动开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18360580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com