sci*_*lot 5 php arrays phpunit unit-testing
我正在尝试将预先计算的测试用例数组发送到模拟中,以便在连续调用中返回-与map函数类似。但是,它需要一个参数列表,而不是数组。
我的数组已经由夹具生成器生成,并且长度可能可变。
我想做的就是这样,但是当然这会使它在第一次调用时返回整个数组。
// In a test case:
$processorMock
->method('process')
->willReturnOnConsecutiveCalls(
$fixtureLoader->getProcessorScenarios() // how to explode this?
);
// class FixtureLoader pseudocode:
function getProcessorScenarios(){
return [
[ $param1, $param2, $param3 ], // case 1
[ $param1, $param2, $param3 ], // case 2
...
[ $param1, $param2, $param3 ], // case N
];
}
Run Code Online (Sandbox Code Playgroud)
我想使用list()或其他语言中类似“ ...”之类的var-args爆炸性语言构造,从夹具加载器中解构返回的数组,但找不到任何有效的本机。
我确实有种怪异的感觉,我将以最初的回答问答方式发布。我想知道这是否是最好的方法。
一位朋友提出了PHP 5.6中的替代方案- “splat”运算符或省略号 (...),尽管它在 PHP 中似乎没有正式名称,但它是一种解构形式,类似于Javascript 中的“spread”运算符ES6。
虽然我还没有对此进行测试(因为我的应用程序目前由于环境限制而锁定为 PHP 5.4),但它应该可以简单地工作:
$processorMock
->method('process')
->willReturnOnConsecutiveCalls(
...$fixtureLoader->getProcessorScenarios()
);
Run Code Online (Sandbox Code Playgroud)
这绝对是我一直在寻找的更甜蜜的选择。
| 归档时间: |
|
| 查看次数: |
1620 次 |
| 最近记录: |