【发布时间】:2021-12-16 20:16:19
【问题描述】:
我有 ServiceApi.php - 在构造函数中它有默认的 guzzle 客户端:
$this->client = new Client($options);
否则它有方法:
public function fetch()
{
return $this->client->get('http://......')->getBody()->getContents();
}
另一个类ServiceUser.php - 有使用ServiceApi的方法:
public function fetchFromApi()
{
return (new ServiceApi())->fetch();
}
当我运行测试时,我想要(new ServiceUser())->fetchFromApi() - 不要调用真正的 api 并返回我在测试中硬编码的预定义答案。
试图在测试中模拟 ServiceApi,但它只在测试方法中工作,当通过 ServiceUser 调用时它会转到真正的 api。
这样做是真的吗? 或者我试图做一些不可能的事情或者这个代码结构不符合测试目的?
【问题讨论】:
-
我建议你使用
Http门面,看看this。
标签: laravel mocking phpunit guzzle