Codeception,架构Global和Suite Helpers / PHP

时间:2014-07-15 19:19:15

标签: php testing codeception

我正在学习这个惊人的Test Framework Codeception )我已经写了一堆测试作为练习,并且所有测试都正确传递。

显然,我遇到了关于测试的体系结构和可重用性以及如何使用不同的Class来构建测试的最佳实践的相同问题。

Cest和Cept:

我如何阅读文档中的测试类型ceptcest。  我尝试了两种写作测试,但是我所做的数量仍然无法理解我何时最好地使用它们。我在文档中阅读的唯一内容是,如果您的测试时间太长,创建Cest Class是最好的方法。

全球助手

要为我的登录表单创建functional test,我的结构如下:

$I = new TestGuy($scenario);
$I->am('A member');
$I->wantTo('Login in the application');
$I->amOnPage('/');

$I->signIn(); // This custom method belongs to a helper

$I->seeInCurrentUrl('/home');

查看SignIn方法

    /**
     * Class TestHelper
     *
     * @package Codeception\Module
     */
 class TestHelper extends \Codeception\Module
 {

    /**
     * Sign In a user
     */
    public function signIn()
    {
        $email = 'test@test.com';
        $password = 'Hello123';
        $username = 'user3';

        // create a dummy account
        $this->haveAnAccount(compact('email','password','username'));

        $I = $this->getModule('Laravel4');
        $I->fillField('.navbar-collapse input[name="email"]',$email);
        $I->fillField('.navbar-collapse input[name="password"]',$password);
        $I->click('LOG IN');
    }
}

此测试正确传递。

现在,如果我想在我的signIn()中使用functional tests方法,那就非常直接地使用它。

问题来自于我必须使用Acceptance创建Selenium测试,并且需要完全相同的过程才能让用户登录,我需要重用完全相同的方法在这种情况下,我不能用于接受。

那么女巫是分享和帮助全球帮手的最佳做法吗?

1 个答案:

答案 0 :(得分:1)

这位助手已经全球化了#39; 您需要的一切是将此助手添加到所需的套件配置 - acceptance.suite.yml:

class_name: AcceptanceTester
modules:
    enabled: [AcceptanceHelper, YourHelper]

然后不要忘记运行

php codeception.phar build