测试消息传递给视图

时间:2018-01-23 17:14:24

标签: php laravel testing phpunit

如何测试我收到此消息:

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();检查

来攻击这个

找到更好的方法会很高兴。

2 个答案:

答案 0 :(得分:0)

不确定您拥有哪种laravel版本,但仍然可以使用assertViewHas($key, $value)函数:

public function testViewDoSomethingHasCorrectTitle()
{
    $response = $this->call('GET', '/my_route');
    $this->assertViewHas('title', 'The message?')
}

https://laravel.com/docs/5.5/http-tests#assert-view-has

答案 1 :(得分:0)

只需执行dd(),您就会知道它是否传递给控制器​​。

在您的视图中执行{{ dd($title) }}