Jer*_*auw 6 php testing phpunit unit-testing mocking
我有一个直接派生自PHPUnit_Framework_TestCase的PHPUnit测试用例.在这个类的测试中,我需要获得一些服务对象的模拟.此服务对象是由抽象基类定义的类型.该基类包含具体和抽象方法.我想得到一个完整的模拟事物(即所有方法被嘲笑).我的问题是如何做到这一点.
- > getMock给我一个错误,因为抽象方法没有被模拟,只有具体的
- > getMockForAbstractClass模拟抽象方法,但不是具体方法
我该如何嘲笑他们?
(我正在使用PHPUnit 3.7.13)
只是调用->getMock('Class');将模拟对象上的所有方法并实现所有抽象方法.
我不确定你哪里出错,但既然如此,看似直截了当我写了一个样本.
如果它不适合你,我需要一个你想要做的重现案例
<?php
class mockTest extends PHPUnit_Framework_TestCase {
// Without expectations
public function testMocking() {
$x = $this->getMock('MockMe');
$this->assertNull($x->foo());
$this->assertNull($x->bar());
}
// With expectations
public function testMocking2() {
$x = $this->getMock('MockMe');
$x->expects($this->once())->method('foo')->will($this->returnValue(true));
$x->expects($this->once())->method('bar')->will($this->returnValue(true));
$this->assertTrue($x->foo());
$this->assertTrue($x->bar());
}
}
abstract class MockMe {
abstract public function foo();
public function bar() {
return 1 + $this->foo();
}
}
Run Code Online (Sandbox Code Playgroud)
PHPUnit 3.7.13 by Sebastian Bergmann.
..
Time: 0 seconds, Memory: 6.25Mb
OK (2 tests, 5 assertions)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7856 次 |
| 最近记录: |