Dam*_*lsh 3 php testing phpunit unit-testing
我正在尝试编写一个测试,我的一个方法使用了一个全局函数web(),该函数采用(字符串)url,并创建并返回UrlHelper. 这为我的应用程序提供了一些辅助方法的快捷方式。(是的 DI 会更好,但这是在幼虫应用程序中......)
我正在尝试测试的方法使用这个全局助手来获取给定 url 的内容并将其与另一个字符串进行比较。
使用 phpunit,我如何拦截对 的调用web或创建,UrlHelper以便确保它返回给定的响应?代码看起来有点像下面
function web($url){
return new \another\namespace\UrlUtility($url);
}
Run Code Online (Sandbox Code Playgroud)
...
namespace some/namespace;
class checker {
function compare($url, $content){
$content = web($url)->content();
...logic...
return $status;
}
}
Run Code Online (Sandbox Code Playgroud)
单元测试正在测试比较的逻辑,所以我想从web调用中获取预期的内容。我希望模拟/存根可以解决问题 - 但我不确定我是否可以点击这个全局函数或另一个未传入的类?
谢谢
您可以使用 Mockery 重载该类,然后更改该方法的实现。
$mock = \Mockery::mock('overload:'.HelperUtil::class);
$mock->shouldReceive('content')->andReturnUsing(function() {
return 'different content';
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6084 次 |
| 最近记录: |