我有以下PHP函数,为此我正在尝试编写一个PHPUnit测试:
public function getDisplayMode()
{
if($this->request->query->get('master_video'))
{
return 'listTranslations';
}
else
{
return 'default';
}
}
$this->request->query->get('master_video')
行是我遇到的麻烦。
我已经模拟了request
对象,所以如果它只是$this->request->get('master_video')
,我可以轻松地使用method
方法告诉系统{{1}应该返回什么}。
但是,当假定存在get
属性时,我不知道该怎么做。 (例如,我不知道模拟对象上有任何query
方法。)
这里是否可以定义property
方法应返回的内容?
答案 0 :(得分:1)
创建var data = "cheese,mozarella",
dataarray = data.split(","),
selectElement = document.getElementById('basic');
// clear select first
clearSelect(selectElement);
for (var i = 0; i < dataarray.length; i++) {
prepopulateOptions(selectElement, dataarray[i]);
}
的模拟并指定在query
上发生的事情。测试最终看起来像这样:
->get()
作为一般规则,我发现在执行这样的操作时,我有一个模拟对象,该模拟对象返回的是代码味道的模拟对象。您的方法不需要$ this-> request,它需要查询对象。您应该将此直接提供给对象,或将其传递给此方法。
在不了解您要上的课的情况下,我无法提供更多建议。
如果难以编写测试内容,则表明您没有对代码进行最佳设计。