LARAVEL 5.0 +单元测试 - assertSessionHasErrors与不同的包

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 未能声称falsetrue.

如果我$errorBag从请求文件中取出属性,我没有问题.

我可以根据需要提供更多细节.

Ben*_*aar 2

您可以从会话商店获取备用包,如下所示:

$myBag = $this->app('session_store')->getBag('otherBag');
$this->assertTrue($myBag->any());
Run Code Online (Sandbox Code Playgroud)

但是,Laravel 默认情况下不使用备用包,因此我假设您正在代码中执行某些操作以向App\Request::$errorBag会话处理程序注册您的内容。