为什么我能';不要在Laravel中创建Mock
最后几天我在PHPLaravel中进行单元测试。我对测试很陌生,但我一般都读过关于如何制作测试的书。。。但事实上我写不好。仍然有一些错误。这是我要测试的类(方法)(模拟): 我们模拟为什么我能';不要在Laravel中创建Mock,laravel,unit-testing,mockery,Laravel,Unit Testing,Mockery,最后几天我在PHPLaravel中进行单元测试。我对测试很陌生,但我一般都读过关于如何制作测试的书。。。但事实上我写不好。仍然有一些错误。这是我要测试的类(方法)(模拟): 我们模拟calCalCalDistances()方法 这是我的测试示例 public function testCalcAllDistances() { $double = Mockery::mock(Locations::class)->shouldReceive('all')->with('')-&g
calCalCalDistances()
方法
这是我的测试示例
public function testCalcAllDistances()
{
$double = Mockery::mock(Locations::class)->shouldReceive('all')->with('')->andReturn(5)->getMock();
$this->app->instance('App\Locations', $double);
$object_under_tests = new \App\Helpers\ApiHelper($double);
$result = $object_under_tests->calcAllDistances('21.132312,21.132312');
$expected_result = [2.3, 4.7, 8.9];
$this->assertEquals($expected_result, $result);
}
不管怎样,我还是会犯这样的错误:
1) Tests\Unit\ApiHelper::testCalcAllDistances
Mockery\Exception\BadMethodCallException: Static method Mockery_0_App_Locations::all() does not exist on this mock object
D:\xampp4\htdocs\api\api\app\Helpers\ApiHelper.php:26
D:\xampp4\htdocs\api\api\tests\Unit\ApiHelperTest.php:41
Caused by
Mockery\Exception\BadMethodCallException: Received Mockery_0_App_Locations::all(), but no expectations were specified
我用我的灵魂发誓,尝试了互联网上的一切。。。。但我仍然无法编写测试。基本上,我想模拟雄辩的方法all()来返回我给定的值,以使calCalDistances()方法工作。尝试了很多,makePartial()等,但没有任何帮助。
非常感谢您的帮助您试图模拟一个静态方法,但您编写的代码却模拟了一个公共方法。包含您正在寻找的嘲弄方式 另一方面,由于诸如模仿静态方法之类的问题,不鼓励为雄辩的模型编写单元测试。拉雷维尔建议改为写作。这些将为一个临时数据库植入测试所需的模型(以牺牲一些性能为代价)
1) Tests\Unit\ApiHelper::testCalcAllDistances
Mockery\Exception\BadMethodCallException: Static method Mockery_0_App_Locations::all() does not exist on this mock object
D:\xampp4\htdocs\api\api\app\Helpers\ApiHelper.php:26
D:\xampp4\htdocs\api\api\tests\Unit\ApiHelperTest.php:41
Caused by
Mockery\Exception\BadMethodCallException: Received Mockery_0_App_Locations::all(), but no expectations were specified