当我对此进行测试时:
self.yourview.isUserInteractionEnabled = true
测试失败,因为我在控制器中使用了模型注入。我知道这种注入需要“绑定”中间件。但是,由于我禁用了所有中间件,因此无法完成注入。
出于身份验证原因,我禁用了中间件。
我尝试添加此内容:
use WithoutMiddleware;
public function testPutSportOK()
{
$sport = Sport::first();
$sportName = 'Modification '.$sport->sport_name;
$position = random_int(0,100);
$post = [
'sport_name' => $sportName,
'position' => $position
];
$response = $this->json('PUT', '/api/sports/'.$sport->id, $post);
$response->assertStatus(200);
但是还是一样。
如何在没有中间件的情况下使用模型注入来测试控制器?
Merci
Dom
编辑:添加带有模型注入的控制器:
$this->withMiddleware('bindings');
答案 0 :(得分:0)
从源代码here中,您实际上可以通过提供一系列想要要禁用的中间件来禁用(而不是全部禁用)某些中间件。
$this->withoutMiddleware([
\App\Http\Middleware\Authenticate,
\App\Http\Middleware\RedirectIfAuthenticated,
// Add more here
]);
答案 1 :(得分:0)
最后我放弃了模型注入的想法。希望在路由和控制器之间传递经典ID。
因此,我的phpunit + postman测试可以完美地工作,并且我不再对这种“绑定”中间件感到厌烦。
当然,需要在控制器中再写一行以读取数据库中的相应模型。但这只是一行。我接受!
Dominique祝您一切顺利