0

好的,情况就是这样。我使用 Doctrine 2 和 PHPUnit。我有一个产品列表,每个产品都有一个类别。我想测试 findByCategory() 方法,它显然应该返回特定类别的产品列表。

很简单,但我不确定如何正确测试它。在网络上的某些地方,我只看到简单的示例,例如:

$this->assertEquals(4, count($foundProducts));

所以它只是测试返回结果的数量,而不是实际数据。我也试过这个:

   foreach($allFoundProducts as $i=>$foundProduct) {
        $this->assertEquals($products[$i], $foundProduct);
    }

其中 $products 是我在搜索之前保留的实体列表。但是它需要很长时间才能完成,有时甚至会崩溃(内存不足)。

请告诉我你用来进行这样的数据库测试的方法。

非常感谢!

4

2 回答 2

0

试试这个:

$products = $em->getRepository('MyProject\Domain\Product')->findBy(array('category' => $category));

或这个:

$products = $em->getRepository('MyProject\Domain\Product')->findByCategory($category);
于 2012-06-29T19:38:44.093 回答
0

我会测试返回结果的数量(就像在你的第一个例子中一样),然后运行结果并测试它们的类型:

$this->assertEquals(4, count($foundProducts));

foreach($foundProducts as $product) {
    $this->assertInstanceOf('MyProductEntity', $product);
}
于 2012-07-28T19:28:31.700 回答