首页 > 解决方案 > PHP 模拟测试在 PHPUnit 内的方法调用部分不起作用

问题描述

我在 PHPStorm 上运行 PHP 8,并且正在尝试为返回 IP 字符串的函数创建测试。我正在使用 PHPUnit & PHPMock

我的测试中有以下代码:

$UserIpAddress = $this->getFunctionMock(__NAMESPACE__, 'ip_request');
        $UserIpAddress->expects($this->once())
            ->method('getRealIpAddr')
            ->willReturn('127.0.0.1');

我的错误是

Method name is already configured

然而,当我删除它时,我收到一个应该被调用的错误。

我已经复制并粘贴了函数名称,它肯定在正确的类中。

我的命名空间是正确的,使用该函数的实际页面工作正常。

有任何想法吗?

谢谢

标签: phpphpunitphpstormtdd

解决方案


固定的!经过大量检查各种选项后,应该进入测试文件的代码是

$local = new ip_request();
        $this->assertEquals('127.0.0.1', $local->getRealIpAddr());

在实际的类文件中

$ip = $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';

我不认为?? '127.0.0.1'应该留在生产中。


推荐阅读