标签: codeception

使用CLI使用phar文件无法正常工作

目前我正在尝试安装代码并使用CLI来获取文件并进行安装.我是CLI的新手,并使用SSH进行连接.但是习惯它.我使用$ WGET然后执行了下载文件$ php codecept.phar bootstrap.

CLI(cygwin)没有做任何事情.它只是创建一个新行,c?$然后我可以继续使用CLI.但没有任何事情发生.所以我想我只是尝试使用composer来安装代码.使用CLI下载composer.phar并使用它运行它$ php composer.phar.然后它创建一个新行????$.然后我可以再次使用CLI,没有任何变化或发生.

我的假设是执行phar文件有问题.有些设置错了吗?

一些额外的数据:

$ php -v:

PHP 5.3.27 with Suhosin-Patch (cli) (built: Jul 25 2013 14:17:18)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies
Run Code Online (Sandbox Code Playgroud)

$ php -m:

包含phar和curl都是codecept所必需的.

$ php -i:( Phar部分)

Phar

Phar: PHP Archive support => enabled
Phar EXT version => 2.0.1
Phar API version => 1.1.1
SVN revision => $Id: 21d763042eb5769ae0a09dc1118df2b5aae6fb33 …
Run Code Online (Sandbox Code Playgroud)

php cygwin command-line-interface phar codeception

2
推荐指数
1
解决办法
1615
查看次数

计算一个类在带有 codeception 的页面中出现的次数

我正在使用 Codeception 运行验收测试,我需要计算带有“.remove”类的按钮在一页中出现的次数。此类按钮位于 html 表内,计数取决于购物车中的商品数量。
以下是我尝试使用的代码:

    $I->amOnPage("/cart/");
    $table = $I->grabTextFrom(".//*[@id='cart']/table");
    $rows = explode("<tr>", $table);
    $rcount = count($rows);
    while ($rcount >= 0) {
        $I->click(".remove");
        $rcount--;
    }
    $I->see("Your shopping cart is empty.");
Run Code Online (Sandbox Code Playgroud)

codeception

2
推荐指数
1
解决办法
2346
查看次数

Codeception seeInDatabase()对我不起作用

我真的坚持这个验收测试.

我的代码是这样的

$I->click('Submit');
$I->see('Client Added');
$I->seeInDatabase('customers',[
    'afm'=>'111'
    ]);
Run Code Online (Sandbox Code Playgroud)

一切都通过,直到带有"seeInDatabase"的行.Log给出了这个错误"ALERT:找不到匹配的记录失败断言'0'大于0".

我检查了数据库设置

modules:
    config:
        Db:
            dsn: 'mysql:host=localhost;dbname=dbtesting'
            user: 'test'
            password: 'test'
            dump: app/tests/_data/dump.sql
            populate: true
            cleanup: true
Run Code Online (Sandbox Code Playgroud)

对我来说似乎很好.我用seeInDatabase()检查了一行,我知道它在那里,是的,它工作得很好.(不是PDO问题或类似的事情)

所以我在表单的"POST"后强制在我的控制器中创建,以确保

public function store(){

\Customer::create(['afm'=>111]);

return \Redirect::route('customers.index')->with('successMsg',Client Added');
}
Run Code Online (Sandbox Code Playgroud)

再一次,我无法验证这一新行.不知道怎么解决这个问题?

////更新/////

当我用香草PDO代码替换Eloquent Insert时,一切正常.如何解决这个问题?(这里有完整信息)

laravel codeception

2
推荐指数
1
解决办法
1889
查看次数

将本地设置导入codeception.yml

是否有机制将本地设置导入codeception.yml配置文件?

我们的开发人员拥有自己的数据库,也许还有一些其他特定于环境的测试设置,因此不应将这些设置推送到GIT.通常我们通过使用两个配置文件来解决这个问题,其中一个配置文件是全局的并且在GIT中.另一个,本地的一个以某种方式合并到全局一个并被git忽略.我想要实现的将是以下结构:

  • codeception.yml - 全局设置
  • codeception.local.yml - 本地设置将合并到全局设置,例如通过导入

配置文件有一个include属性,但它似乎处理完整的测试套件.

codeception

2
推荐指数
1
解决办法
739
查看次数

Phpstorm和Yii2高级模板

我正在使用PhpStormYii2高级模板.我看过所有Yii2文件.一切安好.有关于整合Yii2和PhpStorm(两者都是我的最爱)的一些问题,谷歌搜索没有引起任何好的解决方案.也许很多开发人员都有同样的问题,所以我想问一下:


  1. 我已经使用composer全局安装了代码,然后使用codeception构建并运行高级模板中包含的所有测试.一切都好.但是当我想在PhpStorm中编写新的(前端,后端,...)测试时,没有使用代码的自动完成.此外,当您在PhpStorm中打开一些现有的默认测试(如SignupCest.php文件)时,名称空间未定义且PhpStorm无法在主题类中找到引用的方法!

有什么建议或解决方案吗?

更新

  1. 任何人都可以帮助完成有关如何使用Xdebug,PhpStorm和Chrome/Firefox调试yii2项目的完整教程吗?虽然有一些关于调试纯Php项目/脚本但没有在yii2上找到任何内容的教程.

php phpstorm yii2 codeception yii2-advanced-app

2
推荐指数
1
解决办法
2578
查看次数

使用 XDebug + PHPStorm 进行调试迫使我总是介入

我正在尝试调试我的Codeception测试。

当从浏览器使用正确的IDE-KEY作为 cookie时,我使用PHPStorm + XDebug 的调试平台运行良好。

但是,在尝试使用CLI调试 codecept 时,我遇到了以下问题:

  • 如果我在 Cest 类中放置断点,则行为是正常的。我可以跳过函数并单击“恢复”以停止调试。
  • 但是每当我在我的代码(IE 控制器或我的命名空间类)中放置一个断点时,xdebug 就会变得不可用:

如果我尝试ResumeStep OutStep Over,xdebug 会忽略我的请求并始终步入当前行。

这让我的测试真的很难继续。

我尝试过使用两个平台:我常用的 vagrant + nginx + php5-fpm(带远程调试)和 wamp(本地调试)。

任何帮助,将不胜感激!

——

更新: 嗯,这与 Codeception 无关。我尝试仅使用PHPUnit进行测试,结果也是如此。CLI 似乎也不是问题,因为我尝试从浏览器调试 PHPUnit,但没有成功。

我想可能是 PHPStorm 错误,但查看 xdebug 日志,我看到调用了正确的方法:

<- step_over -i 41
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="41" status="break" reason="ok">
Run Code Online (Sandbox Code Playgroud)

step_over 被调用,而不是 step_into。那么也许是 xdebug 的错误?

奇怪的是,这并不总是发生。更改配置后,有时不会发生,但是错误似乎又回来了......

debugging xdebug phpstorm codeception

2
推荐指数
1
解决办法
1118
查看次数

Codeception:我可以看到一个链接,但无法点击它

我正在学习Codeception,并遇到了一些我认为很奇怪的事情.

// This works
$I->see('Secure Check Out', '(//a[contains(text(),"Secure Check Out")])[2]');

// This does not
$I->click('Secure Check Out', '(//a[contains(text(),"Secure Check Out")])[2]');
Run Code Online (Sandbox Code Playgroud)

无法单击"安全检出","(// a [包含(文本(),"安全检出")])[2]":找不到链接或按钮或CSS或XPath'安全检出'在页面上.

通过Selenium WebDriver对Firefox运行.我该怎么做才能让它发挥作用?

这里大致是相关的HTML.

<div class="mobile-only">
<a href="/responsive/ajax/modals/check-out/login.php" class="secure-checkout button blue bordered small modal-open">Secure Check Out</a>
</div>

<div class="secure-checkout-button threecol last mobile-hide">
<div class="pull-right">
<a style="background-color: transparent;" href="/responsive/ajax/modals/check-out/login.php" class="button blue bordered small modal-open">Secure Check Out</a>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)

selenium xpath acceptance-testing codeception

2
推荐指数
1
解决办法
2269
查看次数

如何在一个项目中的不同文件夹中添加多个代码集?

我有以下文件夹结构,我希望在不同的目录中存在多个测试套件.

- project
    - app
        - app-A
            - tests
                - (functional tests here)

        - app-B
            - tests
                - (functional tests here)

    - domains
        - domain-A
            - tests
                - (unit tests here)

        - domain-B
            - tests
                - (unit tests here)
Run Code Online (Sandbox Code Playgroud)

php testing phpunit unit-testing codeception

2
推荐指数
1
解决办法
1719
查看次数

如何使用 Codeception 看到两层深的ResponseContainsJson?

我是 Codeception 的新手,我正在尝试使用它来测试我的 Web 服务。现在我正试图弄清楚如何深入挖掘并测试来自不同 API 点的输出。例如,我正在尝试创建一个用户并检查响应是否包含必要的详细信息。

创建UserCept.php

<?php 
$faker = Faker\Factory::create();
$I = new ApiTester($scenario);
$I->wantTo('create a new user');
$I->haveHttpHeader('Authorization', 'Bearer ' . file_get_contents('tests/api/token'));
$I->sendPost('users', [
    "first_name"    => "Test",
    "last_name"     => "Test",
    "email"         => 'test@test.com',
    "password"      => "testing",
    "role"          => "1"
]);
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();
Run Code Online (Sandbox Code Playgroud)

响应类似于:

{
  "status": "success",
  "data": {
    "first_name": "Test",
    "last_name": "Test",
    "email": "test@test.com",
    "updated_at": "2015-11-12 09:08:31",
    "created_at": "2015-11-12 09:08:31",
    "id": 54
  },
  "errors": null,
  "message": "Resource Created Successfully"
}
Run Code Online (Sandbox Code Playgroud)

现在我可以做这样的断言:

$I->seeResponseContainsJson(['status' => 'success']);
Run Code Online (Sandbox Code Playgroud)

它就像一种魅力,但是当我这样做时:

$I->seeResponseContainsJson(['data.first_name' => …
Run Code Online (Sandbox Code Playgroud)

php laravel codeception laravel-5

2
推荐指数
1
解决办法
1405
查看次数

REST 模块获取/设置 cookie

我正在使用 codeception REST 模块编写一些测试。

我正在做的项目处于早期阶段,我们还没有实现基于令牌的身份验证;所以现在身份验证是通过 REST API 完成的,但它$_SESSION用于持久性。

要测试经过身份验证的请求,我需要保留PHPSESSIDcookie 并随每个请求发送它。在使用 REST 模块时,有没有办法读取/设置 cookie?

codeception

2
推荐指数
1
解决办法
1659
查看次数