Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHPUnit中测试依赖于外部集合的类?_Php_Unit Testing_Phpunit - Fatal编程技术网

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

如何在PHPUnit中测试依赖于外部集合的类?,php,unit-testing,phpunit,Php,Unit Testing,Phpunit,我的一个类,Foo,有一个方法,Foo::bar(),它依赖于注入的集合,BazCollection,以及从该集合的项中提取的值。我需要对Foo::bar()进行单元测试,但我不知道如何正确地模拟BazCollection依赖项,这样它就不会破坏Foo::bar()的内部实现 例如: class Foo { public function bar(BazCollection $bazzes) { foreach ($bazzes as $baz) {

我的一个类,
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() { /* ... */ }
}
为了隔离和测试
Foo::bar()
逻辑,我如何正确模拟
BazCollection


我假设创建
BazCollection
的实际实例是不允许的,因为我的测试将取决于
BazCollection
是否正常工作?

此链接应该为您指明方向:您的问题有点复杂(不完整?)。是什么导致您将这两个集合模拟为它包含的bazzes?进一步:为什么在迭代器上使用bar()方法运算符?例如,为什么不在foreach中调用它,这样就只在baz/上为baz使用操纵方法,而不为集合使用操纵方法?