如何在PHPUnit中测试依赖于外部集合的类?

时间:2013-07-15 21:04:18

标签: php unit-testing phpunit

我的一个类Foo有一个方法Foo::bar(),它依赖于一个注入的集合BazCollection,以及从该集合的项目中提取的值。我需要单元测试Foo::bar(),我无法弄清楚如何正确模拟BazCollection依赖项,以免它破坏Foo::bar()的内部实现。

所以,例如:

class Foo {
    public function bar(BazCollection $bazzes) {
        foreach ($bazzes as $baz) {
            // Do something with $baz->boz(), and modify $result
        }

        return $result;
    }
}

class BazCollection implements IteratorAggregate {
    protected $_bazzes;

    public function getIterator() {
        return new ArrayIterator($this->_bazzes);
    }
}

class Baz {
    public function boz() { /* ... */ }
}

如何正确模拟BazCollection以隔离和测试Foo::bar()逻辑?

我认为创建BazCollection的实际实例是禁忌,因为那时我的测试将取决于BazCollection正常工作吗?

0 个答案:

没有答案