标签: phpunit

处理PHPUnit的路径问题

我刚刚开始使用PHPUnit,但我遇到了一些麻烦.

我的代码使用$ _SERVER ['DOCUMENT_ROOT']计算包含的路径,当我的apache服务器是运行PHP的服务器时,它运行,但是当我从命令行运行带有"phpunit Tests"的phpunit时,没有设置DOCUMENT_ROOT,所以这些包括不工作.

我在PHPUnit的配置中遗漏了什么?它应该以某种方式与apache集成吗?

php testing phpunit unit-testing include

11
推荐指数
2
解决办法
7192
查看次数

使用PHPUnit测试cookie和会话,如何?

使用PHPUnit,测试原始PHP代码非常容易,但是那些严重依赖于cookie的代码呢?会议可能就是一个很好的例子.

有没有一种方法不需要我$_COOKIE在测试期间设置数据?这感觉就像一种做事的hacky方式.

php cookies session phpunit unit-testing

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

PHP:我如何调整PHPUnit以使用不同的PHP解释器?

我的系统有两个PHP解释器.一个是捆绑了操作系统,另一个是通过XAMPP包安装的.我的所有PHP扩展都应用于XAMPP安装,但PHPUnit似乎只运行我的机器附带的PHP版本.

有没有人知道我可以配置或重建PHPUnit的方式,以便它只使用我的XAMPP PHP解释器?

php xampp configuration phpunit

11
推荐指数
2
解决办法
4646
查看次数

如何断言模拟对象的函数调用的对象参数

考虑

class Foo {
    public $att;
    public function __construct ( $a ) { $this->att = $a; }
}

class Some {
    public function callMe ( Foo $f ) {}
}

// class I want to test
class SuT {
    public function testMe ( Some $s ) {
        echo $s->callMe( new Foo('hi') );
    }
}
Run Code Online (Sandbox Code Playgroud)

我想检查是否Sut::testMe()正确调用Some::callMe().由于参数是一个(Foo)对象(不是标量类型),我无法弄清楚如何调用PHPUnit with()来对其运行断言.assertAttributeEquals例如,有一种方法,但我如何向它提供调用的参数?

我想做的是:

class SuTTest extends PHPUnit_Framework_TestCase {
    public function testSuT () {
        $stub = $this->getMock( 'Some' …
Run Code Online (Sandbox Code Playgroud)

php phpunit

11
推荐指数
3
解决办法
7067
查看次数

如何测试需要使用Selenium进行身份验证的页面?

我需要使用Selenium测试Web应用程序.该应用程序在其设置中相当普遍:它需要登录才能公开大部分功能.加载页面后,如果用户未经过身份验证,它将重定向到登录表单,然后在提供凭据后返回到请求的页面.

用Selenium解决这个问题的常用方法是什么?我认为人们没有登录每一次测试,因为这会导致大型测试套件的大量开销.有没有办法在测试中设置会话,然后将cookie信息用于后续测试,或者进行条件登录(不会导致大量代码重复!)?

我正在使用PHPUnit和Selenium ATM.

谢谢!

贡萨洛

testing selenium phpunit

11
推荐指数
1
解决办法
3463
查看次数

带有全面测试覆盖率的开源php项目示例

有一系列先前的 问题切向问这个问题,但不直接关于PHP,没有实际的答案,所以我希望你可以适应这个问题的迭代.

我担心具有大型代码库和敏感功能的开源项目(例如电子商务,如Magento Commerce)没有公布的单元测试.虽然这并不意味着内部没有测试,但这确实意味着使用该平台的团队需要从头开始测试覆盖.

是否有可公开访问的测试套件具有合理大小和复杂性的开源项目示例?

=== UPDATE ===

我想专门看看带有测试套件的应用程序示例.带有测试的框架和工具很有趣,但我对应用程序特别感兴趣.另外,您能否发表您对所提供测试的质量和/或覆盖范围的任何评论.谢谢!

谢谢,
JD

php phpunit open-source unit-testing magento

11
推荐指数
2
解决办法
1174
查看次数

如何在Symfony2功能测试中使用经过身份验证的用户?

我使用它FacebookBundle来验证我的Symfony2应用程序中的用户.但是,我想用phpunit创建功能测试,该测试使用经过身份验证的用户.

此外,我不想使用facebook用户,而是使用一个用户.

有人知道如何实现这个吗?

php phpunit symfony

11
推荐指数
1
解决办法
6801
查看次数

在PHPUnit/DBUnit中关闭外键约束

我正在开发用于测试模型功能的单元测试.

我使用PHP PDO与DBUnit 1.1.2和PHPUnit 3.6.10,我的数据集是一个yml文件.

我需要在数据库中加载灯具时关闭外键检查.之后,我需要再次打开它,以便我可以在这些约束下运行我的测试.

下面是我的通用Testcase文件中的代码片段(不是整个类文件),我将包含在我开发的任何新测试用例中.

当我在这些设置下运行测试用例时,我发现$ pdo-> exec()没有执行.

我的做法有什么问题?还有更好的选择吗?

class MyTestCase extends PHPUnit_Extensions_Database_TestCase {

public function getConnection() {
  $this->pdo = $this->getPDO();

  echo "BEFORE FOREIGN KEY QUERY\n";
  $conn =  $this->createDefaultDBConnection($this->pdo, 'my-schema');
  $this->pdo->exec("set foreign_key_checks=0");

  return $conn;
}

private function getPDO() {
  include BASEPATH . '/application/config/database.php';
  $dbt = $db['testing'];
  $conn_string = sprintf("%s:host=%s;dbname=%s", $dbt['dbdriver'], $dbt['hostname'],     $dbt['database']);
  $pdo = new PDO($conn_string, $dbt['username'], $dbt['password']);
  return $pdo;
}

public function getDataSet() {
  echo "BEFORE FOREIGN KEY QUERY in getDataSet\n";
  $this->pdo->exec("set foreign_key_checks=1");
  return new PHPUnit_Extensions_Database_DataSet_YamlDataSet(ROOTPATH."/application/tests/data/my-dataset.yml");
} …
Run Code Online (Sandbox Code Playgroud)

phpunit dbunit pdo unit-testing foreign-keys

11
推荐指数
1
解决办法
4781
查看次数

在phpunit中__construct与setup之间有什么区别?

我很想知道在测试类__construct中创建对象是好的做法,还是应该总是使用setup/teardown方法(或setUpBeforeClass/tearDownAfterClass方法)?

我知道每次测试都会调用set/teardown,如果我将objec创建代码放入其中,它会有什么用处吗?例如

//mytestclass.php

class MyTestClass extends PHPUnit_Framework_TestCase
{

    private $obj;

    protected function setUp()
    {
        $this->obj = new FooClass();

    }

   public testFooObj()
   {
     //assertions for $this->obj
   }


   ...

}
Run Code Online (Sandbox Code Playgroud)

如果我在构造函数中创建对象,可能会出现什么问题:

class MyTestClass extends PHPUnit_Framework_TestCase
    {

        private $obj;

        protected function __construct()
        {
            $this->obj = new FooClass();

        }

       public testFooObj()
       {
         //assertions for $this->obj
       }


       ...

    }
Run Code Online (Sandbox Code Playgroud)

我试过谷歌搜索以及PHPUnit文档无法获得太多信息,你能帮我解决哪一个是好的做法?

phpunit

11
推荐指数
2
解决办法
5127
查看次数

Symfony 3作曲家,ext-dom和ext-xml缺失

我正在运行Linux Mint 18.1.我的IDE是PhpStorm,我试图通过作曲家安装PHPUnit.我按照https://getcomposer.org/download/上的安装步骤进行操作.

问题1 - phpunit/phpunit 6.4.x-dev的安装请求 - > phpunit/phpunit [6.4.x-dev]可满足. - phpunit/phpunit 6.4.x-dev需要ext-dom* - >系统中缺少所请求的PHP扩展dom.
问题2 - symfony/symfony v3.3.6需要ext-xml* - >系统中缺少所请求的PHP扩展xml. - symfony/symfony v3.3.6需要ext-xml* - >系统中缺少所请求的PHP扩展xml. - symfony/symfony v3.3.6需要ext-xml* - >系统中缺少所请求的PHP扩展xml. - symfony/symfony的安装请求(锁定在v3.3.6,需要为3.3.*) - > symfony/symfony [v3.3.6]可满足.

我试过的解决方案:

  • 安装php-xml
  • 安装php7.0-xml
  • 这个答案说要检查你的任何php.ini文件中是否启用了"extension = dom.so".它甚至不存在于我的文件中

有什么建议?非常感谢!

phpunit symfony composer-php

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