gio*_*ima 5 php unit-testing laravel-5 laravel-validation laravel-request
我正在Laravel 5.0中编写单元测试,在我的请求类中,我使用不同的包来显示验证错误消息.
我在我的文件中使用它:
/* ExampleRequest.php */
namespace App\Http\Requests;
use App\Http\Requests\Request;
use Illuminate\Support\Facades\Auth;
class ExampleRequest extends Request {
protected $errorBag = 'otherbag';
public function rules(){
return [
'my_field' => 'required'
];
}
}
Run Code Online (Sandbox Code Playgroud)
在我的测试文件中,我正在测试使用它:
/* ExampleTest.php */
class ExampleTest extends TestCase {
public function testPostWithoutData(){
$response = $this->call('POST', 'url/to/post',[
'my_field' => ''
]);
$this->assertSessionHasErrors('my_field');
}
}
Run Code Online (Sandbox Code Playgroud)
如果我运行测试,它无法获得正确的断言并返回此问题:
会议缺少错误:
my_field未能声称false是true.
如果我$errorBag从请求文件中取出属性,我没有问题.
我可以根据需要提供更多细节.
您可以从会话商店获取备用包,如下所示:
$myBag = $this->app('session_store')->getBag('otherBag');
$this->assertTrue($myBag->any());
Run Code Online (Sandbox Code Playgroud)
但是,Laravel 默认情况下不使用备用包,因此我假设您正在代码中执行某些操作以向App\Request::$errorBag会话处理程序注册您的内容。