当输入在构造函数内部时,Laravel Input replace无效

时间:2015-10-23 09:15:49

标签: php unit-testing laravel

我有以下构造函数:

public function __construct()
{
    $relations = \Input::get('relations');
}

我试图在单元测试中替换输入,但由于输入在构造函数内部,我无法替换它。如果我把Input :: get(' relations')放在构造函数之外就可以了。

我尝试的是:

\Input::replace(array('relations'=>'relName'));
\Request::replace(array('relations'=>'relName'));

它们都在构造函数之外工作,并且它们都不在构造函数内部工作。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

看起来你正试图在这里嘲笑一个Facade。您应该查看有关如何在测试中模拟外墙的最新文档:

http://laravel.com/docs/5.1/testing

这个想法基本上可以使用Mockery的方法,如shouldReceive

例如:

<?php

class FooTest extends TestCase
{
    public function testGetIndex()
    {
        Cache::shouldReceive('get')
                    ->once()
                    ->with('key')
                    ->andReturn('value');

        $this->visit('/users')->see('value');
    }
}

这样您根本不需要Input::replace