PHPUnit:在'Wrapper'对象中模拟对象

时间:2016-06-24 19:19:41

标签: php unit-testing mocking phpunit

我不知道这是否有效,但我在文档或类似的博客中找不到任何有关如何执行此操作的信息:

我想测试我的班级 A ,其中包含一些类 B 的函数调用:

class A {

    function foo() {

       B::doSomeThings();
    }
}

如果不使用真正的类 B ,我想模拟这个类。如果我单元测试我的对象A我只找到模拟这个对象的解决方案,如:

$mockA = $this->getMockBuilder('\A')->setMethod('foo')->getMock();

$mockA->expects($this->once())->method('foo')->will(...)

是否可以仅在类 B

中模拟 doSomeThings()功能

1 个答案:

答案 0 :(得分:1)

有一些解决方法

http://miljar.github.io/blog/2014/01/29/phpunit-testing-static-calls/

或者您可以移动到A函数中的其他方法,例如

class A {

    function foo() {

     $this->doSomeThings();
    }

    function doSomeThings() {
       B::doSomeThings();
    }
}

并在A类中模拟doSomeThings()函数