首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RuntimeException:未设置外观根目录

RuntimeException:未设置外观根目录
EN

Stack Overflow用户
提问于 2019-09-08 13:45:25
回答 1查看 1.9K关注 0票数 2

我正试图在另一个包裹的叉子上开发一个实用程序,用于处理Laravel应用程序的数据库模式。

在我的开发中,我想使用测试,因为上一次没有测试。虽然这个包在应用程序中与Laravel6.x完美地集成在一起,但当我尝试测试包时,它却失败了。

代码语言:javascript
复制
<?php

namespace Abkrim\DbSchema\Tests;

use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\DB;
use PHPUnit\Framework\TestCase;
use Faker\Factory as Faker;

class DbSchemaTest extends TestCase
{
    /** @test */
    function it_can_access_the_database()
    {
       $faker = Faker::create();

       $user = DB::table('users')->insert([
           'email' => $faker->unique()->email,
           'name' => $faker->unique()->name,
           'password' => $faker->password(10),
           'rememberToken' => $faker->md5
       ]);
    }
}

如果尝试运行测试

代码语言:javascript
复制
vendor/bin/phpunit --filter DbSchemaTest

1) Abkrim\DbSchema\Tests\DbSchemaTest::it_can_access_the_database
RuntimeException: A facade root has not been set.

/home/abkrim/Sites/db-schema/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:236
/home/abkrim/Sites/db-schema/tests/DbSchemaTest.php:17
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-08 15:29:01

一种简单的遗忘。要在Laravel之外测试Laravel包,有必要扩展管弦乐团TestCase而不是PHPUnit

正确的代码是

代码语言:javascript
复制
<?php

namespace Abkrim\DbSchema\Tests;

use Abkrim\DbSchema\DbSchema;
use Abkrim\DbSchema\DbSchemaServiceProvider;
use Abkrim\DbSchema\DbSchemaFacade;
use Faker\Factory as Faker;
use Illuminate\Support\Facades\DB;
use Orchestra\Testbench\TestCase;

class DbSchemaTest extends TestCase
{
    protected function getPackageProviders($app)
    {
        return [
            DbSchemaServiceProvider::class
        ];
    }

    protected function getPackageAliases($app)
    {
        return [
            'DbSchema' => DbSchema::class
        ];
    }

    protected function getEnvironmentSetUp($app)
    {
        include_once __DIR__ . '/../database/migrations/create_users_table.php.stub';

        (new \CreateUsersTable)->up();
    }

    /** @test */
    function it_can_access_the_database()
    {
        $faker = Faker::create();
        $mail = 'fake@mail.tld';

        DB::table('users')->insert([
           'email' => $mail,
           'name' => $faker->unique()->name,
           'password' => $faker->password(10),
           'remember_token' => $faker->md5
        ]);

        $user = DB::table('users')->first();

        $this->assertSame($user->email, $mail);
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57842516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档