我的测试方法:
public function testProjectTmpImageCanBeUploaded(){
// \Illuminate\Http\UploadedFile;
$file = m::mock(UploadedFile::class, [
"getClientOriginalName" => "author",
"getClientOriginalExtension" => "jpg",
"isValid" => true,
]);
$file->shouldReceive('move')
->once()
->with(config('app.tmp_folder_name')."/project", 'author-now.jpg');
$url = route('upload-project-image');
$this->call("POST", $url,
[
'field' => 'photo',
'item_name' => 'project',
]
,[],['file' => $file]);
}
我也有方法,它使用下一个代码:
if ($file->isValid()) {
$file->move($path, $fileName);//
}
这段代码工作正常,参数是正确的,但是当我执行测试时它会失败并显示下一条:
[2017-09-07 18:21:49] testing.ERROR:Mockery \ Exception \ NoMatchingExpectationException:找不到Mockery_0_Illuminate_Http_UploadedFile :: move(" C:\ OServer \ OpenServer \ domains \ site)的匹配处理程序。 local \ blog \ public / tmp / project /"," project-now.jpg")。方法是意外的,或者它的参数与此方法的预期参数列表没有匹配
有人知道,这个测试的问题是什么?
我使用的是Laravel 5.2.45。
答案 0 :(得分:0)
好吧,如果你仔细观察,你会在测试中看到你有第二个参数author-now.jpg
但是Mockery在第二个参数为project-now.jpg
时给你错误,所以你应该更新第二个参数你的考试