我正在尝试使用代码验证进行验收测试.
我的一项测试有以下内容:
<?php
use Codeception\Util\Stub;
class SomeTest extends \Codeception\TestCase\Test
{
protected $webGuy;
/**
* @test
*/
public function incorrect_login_should_redirect_back()
{
$I = $this->webGuy;
$I->wantTo('fail at logging in');
$I->amOnPage('/'); // <-- This is the line that is failing
$I->fillField('email','info@tntstudio.hr');
$I->fillField('password','pass');
$I->click('Login');
$I->see('email', 'input');
$I->seeCurrentUrlEquals('/login');
}
}
Run Code Online (Sandbox Code Playgroud)
最初测试运行正常,但是在添加Laravel4到acceptance.suite.yml文件并运行之后build,测试现在失败,并显示以下内容:
1) SomeTest::incorrect_login_should_redirect_back
Symfony\Component\HttpKernel\Exception\NotFoundHttpException:
#1 /Applications/MAMP/htdocs/hired/vendor/laravel/framework/src/Illuminate/Routing/Router.php:1021
#2 /Applications/MAMP/htdocs/hired/vendor/laravel/framework/src/Illuminate/Routing/Router.php:989
#3 /Applications/MAMP/htdocs/hired/vendor/laravel/framework/src/Illuminate/Routing/Router.php:968
#4 /Applications/MAMP/htdocs/hired/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:738
#5 /Applications/MAMP/htdocs/hired/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:708
#6 /Applications/MAMP/htdocs/hired/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Client.php:81
#7 /Applications/MAMP/htdocs/hired/vendor/symfony/browser-kit/Symfony/Component/BrowserKit/Client.php:325
#8 /Applications/MAMP/htdocs/hired/app/tests/acceptance/WebGuy.php:476
#9 /Applications/MAMP/htdocs/hired/app/tests/acceptance/SomeTest.php:16
Run Code Online (Sandbox Code Playgroud)
我正在使用vagrant在虚拟环境中运行我的应用程序 http://localhost:3030/
我已将此设置为PhpBrowser配置的URL, …
是否可以使用测试代码中的语句暂停然后恢复代码接受测试执行?
我创建了一个代码单元测试:
<?php
use Something\SiteResultsHolder;
class ResultHolderTest extends \Codeception\TestCase\Test
{
/**
* @var \UnitTester
*/
protected $tester;
protected function _before()
{
}
protected function _after()
{
}
// tests
public function testMe()
{
//this test run
}
public function checkLimit() {
//this test doesn't run
}
}
Run Code Online (Sandbox Code Playgroud)
我在终端中称呼它:
codecept run unit
Run Code Online (Sandbox Code Playgroud)
但唯一的测试调用是 - > testMe,它不运行 - > checkLimit
他们都是公开的.
当我进行验收测试时,所有公共方法都是不同的测试,但在这里似乎没有用.
我如何在那里添加测试?会被称为?
我们如何在测试中使用字符串替换和变量?我怀疑这很常见,我根本不知道在哪里看.示例测试:
$I = new ApiTester($scenario);
$I->wantTo('Get Stuff');
$I->amHttpAuthenticated('myuser', 'mypass');
$I->haveHttpHeader('Content-Type', 'application/json');
$I->haveHttpHeader('Custom-Header', 'friendlycorp');
$I->sendGet('/a/path/that/contains/variables');
$I->seeResponseCodeIs(\Codeception\Util\HttpCode::OK);
Run Code Online (Sandbox Code Playgroud)
正在测试的每个REST API位置使用不同的值,并且URL也会根据要测试的服务而更改.所以,也许是这样的:
$I->amHttpAuthenticated('{USERNAME}', '{PASSWORD}');
$I->sendGet('/a/path/{SERVICE_ID}/and/{SOMETHING_ELSE}/and/such');
$I->haveHttpHeader('Custom-Header', '{SERVICE_ID}');
Run Code Online (Sandbox Code Playgroud)
我希望配置文件可以定义类似{SERVICE_ID}和{FUNCTION},具体取决于我正在测试的REST API服务位置以及其他变量.例如:
FriendlyCorp:
SERVICE_ID: friendlycorp
SOMETHING_ELSE: foo
USERNAME: myuser
PASSWORD: mypass
OpenExample:
SERVICE_ID: openexample
SOMETHING_ELSE: bar
USERNAME: myuser2
PASSWORD: mypass2
Run Code Online (Sandbox Code Playgroud)
然后在执行代码时,我会选择针对FriendlyCorp或OpenExample运行测试,并且将在测试中使用所述值.
我正在尝试增加Codeception REST超时,但是它似乎没有用。
那就是我所拥有的
class_name: ApiTester
modules:
enabled:
- \Helper\Api:
- REST:
depends: PhpBrowser
timeout: 90
Run Code Online (Sandbox Code Playgroud)
我收到超时错误
[GuzzleHttp \ Exception \ ConnectException] cURL错误28:30001毫秒后操作超时,收到0个字节
我究竟做错了什么?