根据"数据库测试"文档,我可以在每次测试后重置数据库(第一个选项).第二个选项是使用Transactions运行测试.对我来说这似乎是一种更好的方法,但如果我想使用事务运行,则迁移不会运行.
有没有办法在所有测试过程中运行一次迁移?
换句话说,我想运行迁移,使用事务运行每个测试,然后回滚.我尝试了文档说的内容,但我认为缺少了一些东西.
如果我有链接:
<a href="/somewhere">Click Me</a>
Run Code Online (Sandbox Code Playgroud)
我知道我可以clickLink根据它的文字.
public function testCanClickLink()
{
$this->browse(function ($browser) {
$browser->visit('/welcome')
->clickLink('Click Me');
});
}
Run Code Online (Sandbox Code Playgroud)
但是如何点击图标链接?
<a href="/somewhere">
<i class="fa fa-plus" aria-hidden="true"></i>
</a>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 vuejs 运行 laravel dusk,但出现错误
1) Tests\Browser\UserCreateTest::testAdminCanCreateAnotherUser Facebook\WebDriver\Exception\TimeOutException:为选择器 [.users] 等待了 5 秒。
这是我的测试
$this->browse(function (Browser $browser) {
$user = User::find(1);
$browser
->loginAs($user)
->visit('/users');
$browser->waitFor('.users');
Run Code Online (Sandbox Code Playgroud)
在Vue模板中,我有类用户的div。
有人知道它有什么问题吗?
我将我的项目从laravel 5.4升级到laravel 5.5,
我在本地环境中没有任何问题,但在服务器中我得到这个例外,
我搜索了很多,我知道这个问题可能重复,但没有解决方案解决了我的问题!
当环境生产时,我怎么能不注册黄昏?
我在AppServiceProvider.php中编写了这段代码:
public function register()
{
// Dusk, if env is appropriate
if ($this->app->environment('local', 'testing')) {
$this->app->register(DuskServiceProvider::class);
}
}
Run Code Online (Sandbox Code Playgroud)
但它似乎无法正常工作.有人可以帮忙吗?
编辑:我的composer.json文件:
"require-dev": {
"filp/whoops": "~2.0",
"fzaninotto/faker": "~1.4",
"mockery/mockery": "1.*",
"phpunit/phpunit": "^7.0.3",
"symfony/css-selector": "4.0.*",
"symfony/dom-crawler": "4.0.0",
"barryvdh/laravel-ide-helper": "^2.4",
"laravel/dusk": "^2.0"
},
Run Code Online (Sandbox Code Playgroud)
例外情况是:
Exception
It is unsafe to run Dusk in production.
Run Code Online (Sandbox Code Playgroud) 我正在编写一些测试,我想看看Dusk是否正确填写了输入字段,但是Dusk在运行测试时未显示浏览器,是否有任何方法可以强制它执行此操作?
我正在使用 laravel5.6并Dusk运行一些测试。
我总是像这样截取我的截图
...
use Facebook\WebDriver\WebDriverDimension;
...
class LoginTest extends DuskTestCase
{
public function testLogin()
{
$user = User::first();
$this->browse(function ($browser) use ( $user ) {
$test = $browser->visit( new Login)
->resize(1920,1080)
...
->driver->takeScreenshot(base_path('tests/Browser/screenshots/testLogin.png'));
});
}
}
Run Code Online (Sandbox Code Playgroud)
但是随着我的测试使用的越来越多,我不想每次都继续写->resize(X,Y)和base_path('bla/blab/bla').
我想为将要编写的每个测试定义大小和路径。
我想我应该定义一些函数,tests/DesukTestCase.php但我什至不知道如何检索驱动程序等等。
你有关于这方面的一些指导或文档吗?因为我找不到任何东西......
我有一个 Laravel 5.4 项目,正在尝试使用 Dusk 运行一些测试。我想在运行测试之前重置、迁移和播种。我已将其设置为使用 SQLite,并且理想情况下希望在内存中运行它,但物理文件也可以。
我能够通过更改 Illuminate\Foundation\Testing\DatabaseMigrations 来获得我想要的东西;原文:
public function runDatabaseMigrations()
{
$this->artisan('migrate');
$this->app[Kernel::class]->setArtisan(null);
$this->beforeApplicationDestroyed(function () {
$this->artisan('migrate:rollback');
});
}
Run Code Online (Sandbox Code Playgroud)
我的版本:
public function runDatabaseMigrations()
{
$this->artisan('migrate:refresh');
$this->artisan('db:seed');
$this->app[Kernel::class]->setArtisan(null);
$this->beforeApplicationDestroyed(function () {
$this->artisan('migrate:rollback');
});
}
Run Code Online (Sandbox Code Playgroud)
但是当然我会在未来的一些更新中失去它,所以我需要覆盖我的特征。
我将特征复制到 App\Traits\DatabaseMigrations.php 并更改了命名空间。
<?php
namespace App\Traits;
use Illuminate\Contracts\Console\Kernel;
trait DatabaseMigrations
{
/**
* Define hooks to migrate the database before and after each test.
*
* @return void
*/
public function runDatabaseMigrations()
{
$this->artisan('migrate:refresh');
$this->artisan('db:seed');
$this->app[Kernel::class]->setArtisan(null);
$this->beforeApplicationDestroyed(function () {
$this->artisan('migrate:rollback');
});
}
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行 Laravel Dusk 测试,但是当我运行测试时,会弹出一个带有此消息的新 Chrome 选项卡。
Fatal error: Class 'Tests\DuskTestCase' not found in path-to-project\tests\Browser\ExampleTest.php on line 9
Run Code Online (Sandbox Code Playgroud)
到目前为止,我所做的只是 runcomposer require --dev laravel/dusk:^1.0和php artisan dusk:install.
这是我的 ExampleTest.php(Laravel 是如何设置的)
<?php
namespace Tests\Browser;
use Laravel\Dusk\Chrome;
use Tests\DuskTestCase;
use Laravel\Dusk\DuskServiceProvider;
class ExampleTest extends DuskTestCase
{
/**
* A basic browser test example.
*
* @return void
*/
public function testBasicExample()
{
$this->browse(function ($browser) {
$browser->visit('/')
->assertSee('Laravel');
});
}
}
Run Code Online (Sandbox Code Playgroud)
DuskTestCase.php 也和 Laravel 一样,有命名空间namespace Tests;。
我正在使用 Laravel 5.4 和 …
我有一个来自laravel 5.1的项目,我们已经对其进行了相应的升级,直到5.6,该应用程序上的所有内容均正常运行。当我安装黄昏并在ExampleTest.php上运行它时:
$this->browse(function (Browser $browser) {
$browser->visit('/');
$browser->dump();
});
Run Code Online (Sandbox Code Playgroud)
我收到这个空的html文档,但我不知道它来自哪里:
"<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body></body></html>"
Run Code Online (Sandbox Code Playgroud)
我使用的是laravel宅基地,我知道黄昏可以正常工作,因为如果我安装了一个新的laravel应用程序(laravel.local),则可以正常工作,并且ExampleTest断言返回绿色。
我到处搜索了可能的原因,但是我已经用光了资源甚至线索,请帮忙。
我有一个页面,其中包含一些禁用的输入、跨度和 div。
在后台我等待按键。这是一些记忆游戏的背景。
我的问题是,结果证明它很难测试。
我知道两个函数来模拟输入:type()和keys(). 当我使用时keys("@someElement", "34"),我得到“元素不可交互”。类似的情况发生在type()(这并不奇怪,因为 type 建议填写一些输入)。
如何在不使用活动输入元素的情况下正确模拟按键?
laravel-dusk ×10
laravel ×8
php ×5
laravel-5.4 ×2
testing ×2
homestead ×1
laravel-5 ×1
laravel-5.5 ×1
traits ×1
unit-testing ×1
vagrant ×1
vue-router ×1
vue.js ×1