Unit testing 以推进查询作为输入测试类

Unit testing 以推进查询作为输入测试类,unit-testing,symfony,phpunit,propel,Unit Testing,Symfony,Phpunit,Propel,我想对使用推进模型或标准对象作为输入的类进行单元测试 由于这是一个Symfony2捆绑包,没有自己的任何模型,我想我可以使用一个类来模拟输入类型,并提供返回静态值的getter和setter 这可能吗?有没有人有这样做的经验?如果我没弄错你的问题,你只需要一个存根: class PropelModelStub { public $someparam; private someMethod(){ // .. } } 存根应该实现类中使用的所有方法,并以某

我想对使用推进模型或标准对象作为输入的类进行单元测试

由于这是一个Symfony2捆绑包,没有自己的任何模型,我想我可以使用一个类来模拟输入类型,并提供返回静态值的getter和setter


这可能吗?有没有人有这样做的经验?

如果我没弄错你的问题,你只需要一个存根:

class PropelModelStub {
    public $someparam;

    private someMethod(){
        // ..
    }
}
存根应该实现类中使用的所有方法,并以某种方式跟踪发生的事情。这取决于你的课程和你想测试的内容。您可以跟踪方法的使用情况或传递给函数的属性

仅在测试中使用:

public function testMyClass(){
    $stub = new PropelModelStub();
    $classToTest = new MyClass($stub);
    classToTest->whatever();

    $this->assertEquals('ValueIExpect', $stub->someparam);
}
在这里,您将存根传递到类中,然后像在代码中一样使用这个类。然后检查存根的值是否正确

PHPUnit内置存根

如果您的PropelModel总是从某个基类扩展而来,那么您可以使用phpunit来创建您的mock。这使事情变得更容易,也减少了代码:

$stub = $this->getMock('\\Namespace\\of\\PropelModel');
$stub ->expects($this->once())
->method('someMethod')
->will($this->returnValue(1));

有关这方面的更多信息,请参阅。

如果我没有弄错您的问题,您只需要一个存根:

class PropelModelStub {
    public $someparam;

    private someMethod(){
        // ..
    }
}
存根应该实现类中使用的所有方法,并以某种方式跟踪发生的事情。这取决于你的课程和你想测试的内容。您可以跟踪方法的使用情况或传递给函数的属性

仅在测试中使用:

public function testMyClass(){
    $stub = new PropelModelStub();
    $classToTest = new MyClass($stub);
    classToTest->whatever();

    $this->assertEquals('ValueIExpect', $stub->someparam);
}
在这里,您将存根传递到类中,然后像在代码中一样使用这个类。然后检查存根的值是否正确

PHPUnit内置存根

如果您的PropelModel总是从某个基类扩展而来,那么您可以使用phpunit来创建您的mock。这使事情变得更容易,也减少了代码:

$stub = $this->getMock('\\Namespace\\of\\PropelModel');
$stub ->expects($this->once())
->method('someMethod')
->will($this->returnValue(1));
有关此操作的更多信息,请参阅