gpt4 book ai didi

PhpUnit Mock 一个内置函数

转载 作者:行者123 更新时间:2023-12-04 13:47:16 25 4
gpt4 key购买 nike

有没有办法模拟/覆盖内置函数 shell_execPHPUnit .我知道 Mockery我不能使用除了 PHPUnit 之外的其他库.我已经尝试了超过 3 小时,但在某个地方卡住了。任何指针/链接将不胜感激。
我正在使用 Zend-framework2

最佳答案

有几种选择。例如,您可以重新声明 php 函数 shell_exec在您的测试范围的命名空间中。
查看这篇很棒的博文以供引用:PHP: “Mocking” built-in functions like time() in Unit Tests .

<php
namespace My\Namespace;

/**
* Override shell_exec() in current namespace for testing
*
* @return int
*/
function shell_exec()
{
return // return your mock or whatever value you want to use for testing
}

class SomeClassTest extends \PHPUnit_Framework_TestCase
{
/*
* Test cases
*/
public function testSomething()
{
shell_exec(); // returns your custom value only in this namespace
//...
}
}
现在,如果您使用全局 shell_exec My\Namespace 中的类中的函数它将使用您的自定义 shell_exec函数代替。

您还可以将模拟函数放在另一个文件中(与 SUT 具有相同的命名空间)并将其包含在测试中。如果测试具有不同的命名空间,您也可以模拟该函数。

关于PhpUnit Mock 一个内置函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39706887/

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