如何测试我收到此消息:
public function doSomething()
{
if($ok){
return view('message-page')
->with('title','The message?')
}
}
我可以断言检查传递给视图的消息吗?
更新
Laravel 5.5
我认为这很棘手,因为我没有进行HTTP调用,这会返回响应。我正在做一个函数调用($foo->doSomething();
),所以我没有得到回复。
我无法进行GET,因为我需要传入一个模拟对象。这是我到目前为止的测试:
public function do_the_test()
{
//Arrange
$mockObject = Mockery::mock('App\MockObject');
$authCode = 123456;
$mockObject->shouldReceive('doSomething')->once()->with($authCode)->andReturn([
'code' => '123456',
'name' => 'joe',
'username' => 'smith',
'email' => 'joe@yahoo.co.uk',
'domain' => 'yahoo.co.uk'
]);
//Act
$object = new Foo($mockObject);
$object->doSomething();
//Assert
??
//check that view is returned with message text
}
进度:
我通过设置会话变量(而不是使用视图传递消息)然后使用assertEquals();
检查
找到更好的方法会很高兴。
答案 0 :(得分:0)
不确定您拥有哪种laravel版本,但仍然可以使用assertViewHas($key, $value)
函数:
public function testViewDoSomethingHasCorrectTitle()
{
$response = $this->call('GET', '/my_route');
$this->assertViewHas('title', 'The message?')
}
答案 1 :(得分:0)
只需执行dd()
,您就会知道它是否传递给控制器。
在您的视图中执行{{ dd($title) }}