damianlewis/oc-octobertesting-plugin

为October CMS启用Laravel的测试框架

v1.0.1 2019-10-15 12:44 UTC

This package is auto-updated.

Last update: 2024-09-16 00:17:33 UTC


README

在October CMS中启用Laravel测试框架的使用。

用法

安装

通过Composer安装

composer require damianlewis/oc-octobertesting-plugin --dev

插件特性与单元测试

要测试插件,在插件基本文件夹内创建一个tests文件夹,并将phpunit.xml文件复制到该位置,例如,/plugins/acme/blog/tests/phpunit.xml。为特性测试和单元测试创建子文件夹,例如,/plugins/acme/blog/tests/feature//plugins/acme/blog/tests/unit/。然后在测试文件夹中,创建遵循Laravel测试原则的测试。在phpunit.xml文件中已配置特性测试和单元测试。

创建测试时,使用替代的Tests\PluginTestCase类。这个替代类不使用内存中的数据库,允许您选择希望用于测试的数据库。以下是一个示例。

<?php

namespace Acme\Blog\Tests\Feature;

use Tests\PluginTestCase;

class ExampleTest extends PluginTestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
        $response = $this->get('/');

        $response->assertStatus(200);
    }
}

Laravel Dusk

要使用Laravel Dusk与OctoberCMS,运行dusk:install Artisan命令

php artisan dusk:install

然后像使用Laravel一样使用Dusk,见Laravel Dusk。例如,要从CLI运行测试,使用dusk Artisan命令

php artisan dusk

身份验证

要使用loginloginAs身份验证方法,需要一个包含用户loginpassword的对象。要提供默认/管理员用户账户,可以在Tests\DuskTestCase类中覆盖user方法,如下所示

<?php

namespace Tests;

use Laravel\Dusk\TestCase as BaseTestCase;
use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;

abstract class DuskTestCase extends BaseTestCase
{
    use CreatesApplication;
    
    ...
    
    protected function user()
    {
        return (object)[
            'login' => 'admin',
            'password' => 'admin'
        ];
    }
}

屏幕截图

要创建浏览器屏幕截图,将--window-size参数添加到ChromeOptions->addArguments方法中,如下所示

$options = (new ChromeOptions)->addArguments([
    '--disable-gpu',
    '--window-size=1280,1024',
    '--headless'
]);