【发布时间】:2019-01-17 21:15:17
【问题描述】:
我的 laravel 项目中有一个 deliverypoint 资源。与路由 deliverypoints.index 关联的控制器代码很简单:
public function index()
{
return view('deliverypoints.index', [
'deliverypoints' => DeliveryPoint::all(),
]);
}
同视图deliverypoints.index:
@extends('layouts.app')
@section('content')
<div class="container">
<ul class="row">
@foreach ($deliverypoints as $deliverypoint)
<li class="col-12">{{ $deliveryPoint->id }}</li>
@endforeach
</ul>
</div>
@endsection
在这里,您可以看到 li 标记中的拼写错误:deliveryPoint->id 而不是 deliverypoint->id。当我在浏览器中手动测试路由时,这会导致“未定义变量”错误:到目前为止,非常好。
我的问题是用 PHPUnit 测试路由时,测试通过而不是报错。这是功能测试的代码:
public function testIndex()
{
$response = $this->get(
route('deliverypoints.index')
);
$response->assertSuccessful()->assertViewIs(
'deliverypoints.index'
)->assertViewHasAll(
['deliverypoints']
);
}
既然测试通过了,我猜这个视图已经被服务器成功返回了,但我希望能检测到错字。
如何强制执行测试以使其看到此类错误?
我将 laravel v5.6 与 PHP v7.1.18 和 PHPUnit v7.2.6 一起使用。
编辑:
我尝试使用以下方法清除缓存:
php artisan cache:clear
php artisan view:clear
php artisan route:clear
但仍然没有检测到错误。
【问题讨论】:
标签: php laravel testing laravel-5 phpunit