小编use*_*454的帖子

Codeception,使用pageObject设计模式和小黄瓜编写验收测试

我正在寻找一个带有pageObject设计模式和小黄瓜的代码的简单示例,因为当我遵循代码生成BDD文档时,所有示例都在tests/support/AcceptanceTester.php中编写.我不明白(英语技能差 - - )如何不将所有代码集中在AcceptanceTester.php文件中.

例如,我有一个带有两个按钮A和B的示例主页.如果用户单击按钮A,则加载页面A,否则如果用户单击按钮B,则加载页面B.

目前,我的AcceptanceTester:

<?php
// tests/_support/AcceptanceTester.php
/**
 * Inherited Methods
 * @method void wantToTest($text)
 * @method void wantTo($text)
 * @method void execute($callable)
 * @method void expectTo($prediction)
 * @method void expect($prediction)
 * @method void amGoingTo($argumentation)
 * @method void am($role)
 * @method void lookForwardTo($achieveValue)
 * @method void comment($description)
 * @method \Codeception\Lib\Friend haveFriend($name, $actorClass = NULL)
 *
 * @SuppressWarnings(PHPMD)
 */

class AcceptanceTester extends \Codeception\Actor
{
    use _generated\AcceptanceTesterActions;

    /**
     * @Given The home …
Run Code Online (Sandbox Code Playgroud)

php gherkin pageobjects codeception

34
推荐指数
1
解决办法
780
查看次数

Codeception,如何从命令行覆盖特定(或非特定)套件测试的url?

我正在寻找一种方法来从命令行覆盖我的测试的基本URL.将来,我会测试很多网站,所以如果我必须在acceptance.suite.yml文件的新环境中添加每个网站,那将非常笨拙.

目前,我acceptance.suite.yml是:

actor: AcceptanceTester
modules:
    enabled:
        - WebDriver:
            url: http://foo.com
            browser: chrome
Run Code Online (Sandbox Code Playgroud)

我看到我可以使用run命令选项'override',但即使我读了代码库文档并浏览帮助网站(比如stack overflox ..),我找不到一个好的覆盖方法.有人能帮我吗?

当我打印所有配置(通过./vendor/bin/concept)时,我得到:

Array
(
    actor => AcceptanceTester
    modules => Array
        (
            enabled => Array
                (
                    0 => Array
                        (
                            WebDriver => Array
                                (
                                    url => http://foo.foo
                                    browser => chrome
                                )
                        )
                    1 => \Helper\Acceptance
                )
            config => Array
                (
                )
            depends => Array
                (
                )
        )
Run Code Online (Sandbox Code Playgroud)

我试过了./vendor/bin/codecept run acceptance --steps -o 'modules: enabled: 0: WebDriver: url: http://faa.faa,但测试一直在运行http://foo.foo …

codeception

6
推荐指数
1
解决办法
425
查看次数

如何在CasperJS中断言失败时继续测试用例?

发生故障时是否有办法继续测试套件?举例:

casper.test.begin("",3,function suite(){
  casper.start(url).then(function(){
    test.assert(...);
    test.assert(...); //If this assert fail, the script stop and the third assert isn't tested
    test.assert(...);
  }).run(function(){
    test.done();
  });
});
Run Code Online (Sandbox Code Playgroud)

我希望所有断言都经过测试,即使有些失败.可能吗?

javascript testing assert casperjs

5
推荐指数
1
解决办法
2218
查看次数

使用FormStateInterface :: getTriggeringElement()发出"two dimentionnal'添加另一个项'"的问题

我正在学习drupal 8.我想创建一个包含'two dimensionnal''添加另一个项目'表单的页面.我的代码几乎运行良好,但是当我向房子添加房间时我有一个奇怪的行为(我的调试日志中有一个来自FormStateInterface :: getTriggeringElement()的奇怪值,请参见底部的代码和日志)

第一:我有两个结构,房子和房间.用户可以创建一些房屋,每个房子,他可以创建一些房间:

在此输入图像描述

当我添加一些房子,表格工作正常:

在此输入图像描述

当我将一些房间添加到最后一个房子时,表格也可以正常工作:

在此输入图像描述

但是,当我向任何"没有最后"的房子添加一些房间时,表格不能正常工作(在屏幕截图中,我点击了一次"阻止房屋"中的"添加房间",标签为"房子1"成了"房子2"(?!),点击添加5个房间(?!):

在此输入图像描述

这里是我的代码和一个奇怪的调试日志,我不解释为什么我得到这个值(来自room_addMoreSubmit回调中的getTriggeringElement(),这是我认为的问题)

<?php

namespace Drupal\projet\Form;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;

class HouseForm extends FormBase {

  public function getFormId(){
    return 'custom_rooms_form';
  }

  function buildForm(array $form, FormStateInterface $form_state) {



    $house_count = $form_state->get('house_count');

    if (is_null($house_count)) {
      $house_count = 1;
      $form_state->set('house_count', $house_count);
    }

    $form['house'] = array(
        //'#tree' => TRUE,
        '#prefix' => '<div id="house-replace">',
        '#suffix' => '</div>'
    );

    for ($house_delta = 0; $house_delta < $house_count; $house_delta++) {
      if (!isset($form['house'][$house_delta])) {

        $room_count[$house_delta] = $form_state->get('room_count_'.$house_delta);

        if (is_null($room_count[$house_delta])) {
          $room_count[$house_delta] = …
Run Code Online (Sandbox Code Playgroud)

drupal-ajax drupal-forms drupal-8 programmatically-created

5
推荐指数
1
解决办法
187
查看次数

Drupal 8,以编程方式获取自定义内容的字段列表

我想以编程方式创建自定义内容(通过管理UI创建的自定义内容).但是,在创建之前,我想以编程方式检查自定义内容的字段类型

我的自定义内容包含字段"body"(类型文本),字段"description"(类型文本),int字段(类型int),附加文件字段(类型fid?)...

我用Drupal 8的新api测试了几种方法,我的最后一次尝试..

// I get the entity object "my_custom_content"
$entity_object = NodeType::load("my_custom_content");
dpm($entity_object); //Work perfectly


$test = \Drupal::getContainer()->get("entity_field.manager")->getFieldDefinitions("my_custom_content",$entity_object->bundle())
//The \Drupal::getConta... Return an error : The "my_custom_content" entity type does not exist.
Run Code Online (Sandbox Code Playgroud)

使用此$ entity_object,如何获取自定义内容的字段列表?我看到了EntityFieldManager类,FieldItemList类......但我仍然不明白如何玩drupal 8/class/poo ...:/

谢谢 !

drupal-8 drupal-fields drupal-nodes

5
推荐指数
1
解决办法
1万
查看次数

Symfony 4,一种从现有数据库生成实体的方法?

使用 Symfony 3 及其控制台,我们可以通过命令“php bin/console algorithm:mapping:import”(非常有用!)从已经存在的数据库生成实体。

从 symfony 4 开始,命令“./bin/console algorithm:mapping:import”需要一个包名,但 symfony 4 现在不适用于包。

使用新版本的 symfony,有没有一种我没有看到从现有数据库(例如 mysql)生成实体的方法?或者我必须等待新版本的学说才能拥有与 Symfony 4 兼容的“学说:映射:导入”?

我找到了一个(n)(丑陋的)解决方案。我部署了一个一次性的 symfony 3,我将 symfony 3 链接到我的数据库,并在一个包中生成实体。然后我将生成的文件复制到 symfony 4。它很难看,但它有效哈哈

doctrine symfony symfony-console symfony4

5
推荐指数
1
解决办法
5769
查看次数

Symfony 4,禁用树枝缓存

从 symfony 4 开始,如何禁用 twig 缓存?

当我编辑 .html.twig 文件时,我必须通过命令“./bin/consoleclear:cache”清除缓存,以便在浏览器中查看更新后的结果。我希望它不要每次执行 shell 命令时都执行。

在 config/packages/twig.yaml 配置文件中,我添加了:

auto_reload: '%kernel.debug%'
Run Code Online (Sandbox Code Playgroud)

但没有任何改变,每次修改模板文件时我仍然必须执行cache:clear命令。

symfony4

5
推荐指数
1
解决办法
1万
查看次数

通过gnome-terminal打开终端然后执行命令,错误:"无法执行子进程"

通过bash命令,我想打开一个终端,并从新终端执行一个简单的bash命令.

我尝试:

gnome-terminal -- "/bin/bash -c ls"
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

在此输入图像描述

我不明白错误,我找不到任何帮助我的例子..

bash gnome-terminal

5
推荐指数
1
解决办法
1万
查看次数

Symfony 4 &amp; encore 自动刷新不起作用,我总是必须手动重新加载浏览器

从一个新的 Symfony 4 项目中,当我运行这个命令时:

./node_modules/.bin/encore dev-server --hot
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

然后我修改了一个 scss 文件(通过示例更改 body 标签背景颜色),shell 做出反应

在此处输入图片说明

但是我的浏览器不会自动刷新!我总是必须手动重新加载页面以查看最新的 css 更改。我可以在哪里做一个 mystake?

谢谢 !

=> 我用不同的浏览器测试过 => 如果我修改自定义 javascript 文件,浏览器会自动刷新!相反,当我更改 scss 文件时

=> 我的资产目录结构:

在此处输入图片说明

=> 我的 webpack.config.js 内容:

var Encore = require('@symfony/webpack-encore');

Encore
    // directory where compiled assets will be stored
    .setOutputPath('public/build/')
    // public path used by the web server to access the output path
    .setPublicPath('/build')
    // only needed for CDN's or sub-directory deploy
    //.setManifestKeyPrefix('build/')

    /*
     * ENTRY CONFIG
     *
     * Add 1 entry for …
Run Code Online (Sandbox Code Playgroud)

css symfony webpack-dev-server webpack-encore symfony4

5
推荐指数
1
解决办法
3501
查看次数

Codeception,请勿打印要报告的特定操作

在代码接收中,我想检查页面中是否存在某个元素,并再次测试第一个元素是否存在。我可以简单地做到这一点:

// $I is a AcceptanceTester Object and extends \Codeception\Actor class
try{
    $I->see('.firstElement');
}catch(ElementNotFound $e){
    // do some actions
}
    // do some anothers actions
Run Code Online (Sandbox Code Playgroud)

但是,如果这样做,我可以在报告文件中看到该行"I see '.firstElement'"。我不想在此报告中看到此测试。

我的问题:如何安静地调用\ Codeception \ Actor方法?我只想做一个简单的DOM元素html检查,而不是将此操作打印到生成的报告中

php codeception

5
推荐指数
1
解决办法
155
查看次数