我有以下问题:
我想测试控制器,如果在调度过程中没有发生异常,但控制器使用外部库,它有自己的phpunit
测试。这个库也使用外部库与自己的测试等等...模拟PHPUnit中的所有有效方法
所以我的应用程序看起来类似于本图:
request -> router -> dispatch -> controller -> view
如果在此procces任何错误occures。应用程序抛出异常。我想测试控制器,但现在我必须编写+50行代码来模拟所需的所有对象。
图像例如,我从控制器传递到view
。
在view
我有这样的事情:
<?php echo $form->openTag('form'); ?>
<?php echo $form->openTag('fieldset'); ?>
<?php echo $form->label('firstName'); ?>
<?php echo $form->input('firstName'); ?>
<?php echo $form->errorMessages('firstName'); ?>
<?php echo $form->closeTag('fieldset'); ?>
<?php echo $form->openTag('fieldset'); ?>
<?php echo $form->label('gender'); ?>
<?php echo $form->radio('gender'); ?>
<?php echo $form->errorMessages('gender'); ?>
<?php echo $form->closeTag('gender'); ?>
...
<?php echo $form->closeTag('form'); ?>
比方说,我有形式与20个输入......你明白我的意思?我必须模拟所有可用的方法来通过我的测试。
可以用所有有效的方法来模拟对象吗?
我的意思是如果有一种方法来模拟类将有所有方法有效?不需要定义任何东西。
如果应用程序需要类A
的对象,它将返回类A
的对象。
如果应用程序需要阵列将返回阵列
等。
不,这不是嘲笑的作品 - 你的嘲笑不能假设你在运行时给你什么,而是你必须指示你的嘲笑,并让它们返回你想要测试的东西那个时间点。 第三方依赖有其自己的单元测试的事实应该给你足够的覆盖,尽管...你应该嘲笑这些依赖并且有一系列单元测试,确保你的控制器处理任何依赖可能适当返回的东西。 –
所以,你说我必须编写+50行代码才能模拟该窗体的工作正常吗? – user7686493