【发布时间】:2010-11-12 11:10:02
【问题描述】:
我正在使用 PHPUnit,但很难让它为用作数据存储的对象创建好的模拟和存根。
例子:
class urlDisplayer {
private $storage;
public function __construct(IUrlStorage $storage) { $this->storage = $storage; }
public function displayUrl($name) {}
public function displayLatestUrls($count) {}
}
interface IUrlStorage {
public function addUrl($name, $url);
public function getUrl($name);
}
class MysqlUrlStorage implements IUrlStorage {
// saves and retrieves from database
}
class NonPersistentStorage implements IUrlStorage {
// just stores for this request
}
例如,如何让 PHPUnit 存根在具有不同 $name 的两个调用中返回多个可能的值?
编辑:示例测试:
public function testUrlDisplayerDisplaysLatestUrls {
// get mock storage and have it return latest x urls so I can test whether
// UrlDisplayer really shows the latest x
}
在这个测试中,mock 应该返回多个 url,但是在文档中我只返回一个值。
【问题讨论】:
-
终于可以发表评论了。 :) 你能澄清一下你想用这个来测试什么吗?你想对你的 IUrlStorage 类进行单元测试吗?您能否提供一个更具体的示例来说明 PHPUnit 无法完成的工作?谢谢。
标签: php unit-testing mocking stubbing