我正在尝试使用Mockery来确定我的控制器是否被正确调用。
我从我的测试用例中调用该函数,该方法正确返回。但是,Mockery似乎没有接到这个电话。
我尝试使用$ this-> call和$ this-> client->请求进行通话。两个调用都返回结果,因此Mockery应该计算对控制器的调用。
public function testIndex()
{
/**$entity = \Entity\Classes\Entity::get();
var_dump($entity); **/
//This works, and is returning all the entities for that entity
$headers = array();
$mock = Mockery::mock('\Entity\Classes\Entity');
$mock->shouldReceive('index')->once();
$crawler = $this->custom_request('GET', '/entity/entities/114', $headers);
//echo $response = $this->client->getResponse()->getContent();
//This also works, so the call is being made. custom_request calls $this->client->request method
//$this->call('GET', 'http://myurl:1000/entity/entities/114');
//This alternate method to make the call also work
$this->assertResponseOk();
}
错误:
1) ClassTest::testIndex
Mockery\Exception\InvalidCountException: Method index() from
Mockery_0_Entity_Classes_Entity should be called
exactly 1 times but called 0 times.
答案 0 :(得分:2)
通常你会将模拟注入某个东西,现在它只是坐在你的测试方法中而不被使用。如果您正在使用Laravel,您需要使用模拟替换IoC容器中的实际Entity\Classes\Entity
,或者如果Entity\Classes\Entity::index
是静态方法,则需要使用别名模拟,但我不想不推荐,这是一堆蠕虫。
编辑:
在此页https://github.com/padraic/mockery/blob/master/docs/05-QUICK-REFERENCE.md上搜索别名模拟的“别名:”。请注意,您可能希望运行使用别名模拟与phpunit进程隔离的测试。