PHPUnit:assertJsonStringEqualsJsonFile() 中路径的正确参数

PHPUnit: Correct Argument for Path in assertJsonStringEqualsJsonFile()

编辑:PHPUnit 版本 4.5 稳定。

official documentation 解释了函数的两个参数:

assertJsonStringEqualsJsonFile($expectedFile, $actualJson)

$expectedFile 是存储在项目中的 JSON 文件的路径。但是,我不确定 $expectedFile 路径的基本目录是什么。例如,如果我有:

project-x/tests/MyClassTest.php
project-x/MyClass.php
project-x/tests/myJson.json

如何将此函数指向 myJson.json?

当我指定

asstertJsonStringEqualsJsonFile('tests/myJson', $myArg);

我不断收到如下错误:

Failed asserting that file "tests/myJson.json" exists.

或者如果我给出整个路径:

asstertJsonStringEqualsJsonFile('/home/user-x/myproject/way/deep/tests/myJson', $myArg);

我得到:

PHPUnit_Framework_Exception: Argument #1 (No Value) of PHPUnit_Framework_Assert::assertJson() must be a string

正确的语法是什么?

您可以使用 __DIR__ 魔术常量。当您在测试用例中调用 tests/MyClass.php 时,请使用:

asstertJsonStringEqualsJsonFile(__DIR__ . '/myJson.json', $myArg);