Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php laravel绑定模拟实例失败_Php_Laravel_Unit Testing_Testing_Mocking - Fatal编程技术网

php laravel绑定模拟实例失败

php laravel绑定模拟实例失败,php,laravel,unit-testing,testing,mocking,Php,Laravel,Unit Testing,Testing,Mocking,我试图用嘲弄来嘲弄一个班级。 我创建了一个新的Laravel项目 我创建了控制器app/Http/Controllers/Mockcontroller.php,其中包含以下内容: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class Mockcontroller extends Controller { function get($id) { return 'FAILE

我试图用嘲弄来嘲弄一个班级。 我创建了一个新的Laravel项目

我创建了控制器app/Http/Controllers/Mockcontroller.php,其中包含以下内容:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class Mockcontroller extends Controller
{
    function get($id) {
        return 'FAILED';
    }
}
    <?php

    use Illuminate\Foundation\Testing\WithoutMiddleware;
    use Illuminate\Foundation\Testing\DatabaseMigrations;
    use Illuminate\Foundation\Testing\DatabaseTransactions;

    class ExampleTest extends TestCase
    {
        /**
         * A basic functional test example.
         *
         * @return void
         */
        public function testBasicExample()
        {
            $mock = Mockery::mock(App\Http\Controllers\Mockcontroller::class);
            $mock->shouldReceive('get')
                ->with(10)
                ->andReturn('SUCCESS');
            $this->app->instance(App\Http\Controllers\Mockcontroller::class, $mock);

            $ctrl = new App\Http\Controllers\Mockcontroller();
            dd($ctrl->get(10));


        }
    }
我得到这个输出

PHPUnit 5.7.5 by Sebastian Bergmann and contributors.

"FAILED"
zsh: exit 1     vendor/bin/phpunit
当我替换此行dd$ctrl->get10时;通过以下行:

dd($mock->get(10));
我得到了正确的文本:成功

这就是失败的模拟注射

你有没有办法正确注入我的mock?

使用$ctrl=new App\Http\Controllers\Mockcontroller;在不使用应用程序容器的情况下创建控制器的新实例,从而创建模拟


由于您将模拟设置为$this->app->instanceApp\Http\Controllers\Mockcontroller::class,$mock;您需要以$this->app->makeApp\Http\Controllers\Mockcontroller::class;的形式获取is;,但是说实话,我觉得你做的事情没有多大意义。

谢谢你的回答。最初,我在一个雄辩的存储库上创建了mock,但我想从blank Laravel项目中创建一个。所以我使用一个控制器。根据您的回答,我得到一个错误,$this->app不包含get方法:PHP致命错误:调用未定义的方法illumb\Foundation\Application::get in/var/www/to.auzuret/tetsmock/tests/ExampleTest.PHP在第27行我使用了Laravel 5.3Sorry,当然它是$app->make,而不是$app->->gethank,谢谢!所以,我用这个路径系统App\Controller\。。。再次感谢
dd($mock->get(10));