如何将一组测试用例发送到PHPUnit willReturnOnConsecutiveCalls
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何将一组测试用例发送到PHPUnit willReturnOnConsecutiveCalls,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1544字,纯文字阅读大概需要3分钟。
内容图文
我试图将预先计算的测试用例数组发送到一个模拟中,以便在连续调用时返回 – 类似于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
];
}
我想从夹具加载器中构造返回的数组,使用list()或一些var-args爆炸语言构造,如“…”在其他语言中,但找不到任何有效的本机.
我确实感觉像一个hacky方法,我将作为一个初始答案Q& A风格发布.我想知道这是不是最好的方法.
解决方法:
我发现的方法是使用call_user_func_array函数将数组扩展为参数.
call_user_func_array(
[$processorMock->method('process'), 'willReturnOnConsecutiveCalls'],
$fixtureLoader->getProcessorScenarios());
这感觉很讨厌,打破了模拟的流畅定义.我猜它会有一些缺点,例如未来的脆弱性.
在它成为复制面食模板解决方案之前,我想找到一个更甜的选择!
更新:
我发现我需要在asserts中包含一些参数,因为它们是更复杂的类型,例如类.
// class FixtureLoader pseudocode:
function getProcessorScenarios(){
$param1 = PHPUnit_Framework_Assert::IsInstanceOf('MyApp\Model\Thingumy');
$param1 = PHPUnit_Framework_Assert::isInstanceOf('MyApp\Model\Whatsit');
return [
[ $param1, $param2c1, $param3 ], // case 1
[ $param1, $param2c2, $param3 ], // case 2
...
[ $param1, $param2c3, $param3 ], // case N
];
}
内容总结
以上是互联网集市为您收集整理的如何将一组测试用例发送到PHPUnit willReturnOnConsecutiveCalls全部内容,希望文章能够帮你解决如何将一组测试用例发送到PHPUnit willReturnOnConsecutiveCalls所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。