Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 菲普尼特孤立世界_Php_Unit Testing_Tdd_Phpunit - Fatal编程技术网

Php 菲普尼特孤立世界

Php 菲普尼特孤立世界,php,unit-testing,tdd,phpunit,Php,Unit Testing,Tdd,Phpunit,我刚刚开始使用PHPUnit。在此之前,我使用了RSpec和Cucumber,以及它们的隔离环境,它们非常好。 我已经完成了我的第一个phpunit测试并创建了两个模拟类,我想知道它们是否会留在我的下一个测试中,并且,正如我所推测的,它们会 现在,我正在考虑为所有这些助手使用一个真正特定的名称空间,如下所示: <?php namespace Subject; class FirstDependency { /* ... */ } class TestableSubject extends

我刚刚开始使用PHPUnit。在此之前,我使用了RSpec和Cucumber,以及它们的隔离环境,它们非常好。 我已经完成了我的第一个phpunit测试并创建了两个模拟类,我想知道它们是否会留在我的下一个测试中,并且,正如我所推测的,它们会

现在,我正在考虑为所有这些助手使用一个真正特定的名称空间,如下所示:

<?php
namespace Subject;

class FirstDependency { /* ... */ }
class TestableSubject extends \Subject { /* ... */ }

class SubjectTest extends \PHPUnit_Framework_TestCase {
    /* tests */
}

那么您将测试与实现放在一起了?“哪一个更快”——没关系。“任何更好的方法”——是的,显式地传递依赖项(通过方法或构造函数)。“创建了2个模拟类”-你通常创建模拟对象,而不是类。不,我没有。测试和实现区域显然位于它们自己的文件中。我把测试单元和它的助手放在一起,比如
FirstDependency
mock类。我已经读过PHPUnit的模拟实用程序,但现在我觉得自己的工具更合适。如果你把它们分开保存,你不清楚名称空间到底有什么问题。“有没有更好的方法来做到这一点”,“我对自己的感觉更舒服”-你为什么要问这个问题?你可以创建一个模拟对象(就像在任何其他测试环境和语言中一样,包括但不限于:javascript、java、c)。然后使用任何您喜欢的依赖项注入技术(setter注入、构造函数注入,甚至使用反射的属性注入)将对象作为显式依赖项传递,我理解。或者:a)修改代码以测试它(如果你遵循tdd,你就不会被实际卡在里面)。b) 创建部分模拟(仍然是对象)。