1 回答
TA贡献1827条经验 获得超4个赞
最轻松的方法是通过php-mock/php-mock-phpunit包。
在您的情况下,正确的用法是:
namespace Tests\Random;
use PHPUnit\Framework\TestCase;
use Utils\Random\RandomHelper;
class RandomHelperTest extends TestCase
{
use \phpmock\phpunit\PHPMock;
public function testLucky()
{
$rand=$this->getFunctionMock('Utils\Random', "rand");
$rand->expects($this->once())->willReturn(RandomHelper::LUCKY_NUMBER);
$boolean=RandomHelper::lucky();
$this->assertTrue($boolean);
}
public function testLuckyFails()
{
$rand=$this->getFunctionMock('Utils\Random', "rand");
$rand->expects($this->once())->willReturn(0);
$boolean=RandomHelper::lucky();
$this->assertFalse($boolean);
}
}
正如您所看到的,您可以使用@Anton Mitsev 所说的 php-mock,并且在类的命名空间上,您可以将想要固定和受控行为的方法存根。
所以一个简单的经验法则是:
在不包括运行
composer require --dev php-mock/php-mock-phpunit
在每个测试中,包括
\phpmock\phpunit\PHPMock
特征找到你的类的命名空间。
使用以下方法模拟函数:
$functionMock=$this->getFunctionMock(^class_namespace^,^function_name^); $functionMock->expects(^expected_call_times^)->willReturn(^values^);
- 1 回答
- 0 关注
- 142 浏览
添加回答
举报