我正在Symfony 4.3项目中使用PHPUnit执行功能测试。我所有的测试类都来自TestCase。
我在存根调用外部服务的方法的结果时遇到问题。我不想在我的项目功能测试中检查此服务是否正常工作,所以请执行以下操作:
public function testPutEndpoint()
{
$stub = $this->createMock(ExternalRepository::class);
$stub->method('put')->willReturn(['data'=> ['data']]);
{
list($responseCode, $content) = $this->makeCurl(
//Here a curl to the endpoint of my project is done
);
$this->assertEquals(200, $responseCode);
}
在这里,我看到代码如何继续抛出真正的方法而忽略了子代码。
所以我的问题是,如何对逻辑内的方法进行测试,但不能在测试类中直接调用它?
此外,端点的构造函数将注入存储库作为注入:
protected $externalRepository;
public function __construct(ExternalRepository $externalRepository)
{
$this->externalRepository = $externalRepository;
$this->commandBus = $commandBus;
}
答案 0 :(得分:0)
目前,我发现对控制器进行功能测试的最佳解决方案是:
断言控制器的返回值符合预期
['1', '+', '2']