synaq / mockery-extras
Mockery 框架的额外匹配工具。
1.0
2020-03-18 06:51 UTC
Requires
- galbar/jsonpath: ^1
- mathiasgrimm/arraypath: ^2
- mockery/mockery: ^1.3
Requires (Dev)
- phpunit/phpunit: ^8
This package is auto-updated.
Last update: 2024-09-05 22:02:12 UTC
README
Mockery 框架的额外匹配工具。
ArrayPath
如果指定数组路径的元素包含预期的值,则匹配数组。
数组路径的语法由 mathiasgrimm/arraypath 定义。
示例
use Synaq\MockeryMatcher\ExtraMatchers;
$expectedValue = 'baz';
$arrayPath = 'foo/bar';
$dependency = Mockery::mock('DependencyOfObjectClassUnderTest');
$testSubject = new ObjectClassUnderTest($dependency);
$testSubject->performSomeAction();
$dependency->shouldHaveReceived('someMethodCallThatAcceptsAnArrayAsParameter')
->with(ExtraMatchers::arrayPath($expectedValue, $arrayPath))
->once;
上述调用将匹配如下定义的数组
$array = [
'foo' => [
'bar' => 'baz'
]
];
这些不一定是数组中的唯一元素,bar 也无需是 foo 的唯一子元素。这允许测试被构建,对传递给测试对象类依赖项的数组结构进行非常具体的断言。
JsonPath
如果给定 jsonpath 表达式标识的子节点包含预期的值,则匹配 JSON 字符串。
语法和行为源自 skyscanner/jsonpath 库。默认情况下,匹配器使用库的 SmartGet 行为,这意味着如果给定的路径没有分支,将直接返回值,而不是包含值的单个元素数组,这是通常的 jsonpath 行为。
有关使用详情,请参阅库包的文档。
示例
use Synaq\MockeryMatcher\ExtraMatchers;
$expectedValue = 'baz';
$jsonPath = '$.foo.bar';
$dependency = Mockery::mock('DependencyOfObjectClassUnderTest');
$testSubject = new ObjectClassUnderTest($dependency);
$testSubject->performSomeAction();
$dependency->shouldHaveReceived('someMethodCallThatAcceptsAJsonStringAsParameter')
->with(ExtraMatchers::jsonPath($expectedValue, $jsonPath))
->once;
上述调用将匹配以下 JSON 字符串
{
"foo": {
"bar": "baz"
}
}
与 ArrayPath 匹配器类似,JSON 字符串可以编码任何其他任意数据。只要给定的 jsonpath 表达式指向预期的值,字符串就会被匹配。