标签: phpunit

调用未定义的方法PHP_CodeCoverage_Filter :: getInstance()

我在我的系统上安装了一个新的PHPUnit副本(Ubuntu 11),但每当我输入phpunit控制台时,我都会收到以下错误:

PHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/bin/phpunit on line 39

据我所知,我安装了PHPUnit的代码覆盖率:

>sudo pear install phpunit/PHP_CodeCoverage

phpunit/PHP_CodeCoverage is already installed and is the same as the released version 1.1.1

install failed

为什么我会收到此错误,如何解决?

ubuntu pear phpunit

48
推荐指数
3
解决办法
3万
查看次数

使用需要发送标头的项目进行单元测试

我目前正在使用PHPUnit来尝试和我正在编写的内容一起开发测试,但是,我正在编写会话管理器,并且遇到了这样的问题......

Session处理类的构造函数是

private function __construct()
{
    if (!headers_sent())
    {
        session_start();
        self::$session_id = session_id();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,由于PHPUnit在开始测试之前发送文本,因此对此Object的任何测试都会返回失败的测试,因为HTTP"Headers"已经发送...

php phpunit unit-testing

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

PHPUnit测试的"Web界面"?

是否有一个简单的"Web界面"来运行PHPUnit测试套件?即在命令行上运行测试的PHP脚本,并输出格式良好的HTML结果.

我开发Web应用程序,日常工作流程通常在IDE和浏览器之间切换.我想在同一环境中进行单元测试.

我正在寻找一些非常简单且基于PHP的东西 - 我打算进入phpUnderControl(它具有我正在寻找的功能)但还没有.

php tdd phpunit unit-testing

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

PHPUnit模拟对象和静态方法

我正在寻找测试以下静态方法的最佳方法(特别是使用Doctrine模型):

class Model_User extends Doctrine_Record
{
    public static function create($userData)
    {
        $newUser = new self();
        $newUser->fromArray($userData);
        $newUser->save();
    }
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我会使用模拟对象来确保调用"fromArray"(使用提供的用户数据)和"save",但这是不可能的,因为该方法是静态的.

有什么建议?

php phpunit unit-testing doctrine mocking

46
推荐指数
3
解决办法
6万
查看次数

PHPUnit - 什么都不做,没有错误,没有输出

对不起另一个'phpunit不起作用'的问题.它曾经工作多年了.今天我重新安装了PEAR和phpunit,原因与此问题无关.现在,当我像往常一样运行phpunit时.什么都没发生.cli只是向我展示了一条新线,没有任何输出.

有没有人遇到过这个问题,或者有什么可能导致它的问题.

PHPUnit Version: 3.5.15 
PEAR Version: 1.9.4 
PHP Version: 5.3.8 
Windows 7
Run Code Online (Sandbox Code Playgroud)

phpunit

45
推荐指数
7
解决办法
3万
查看次数

如何在Laravel中获取HTTP请求正文内容?

我正在制作一个API,Laravel 5我正在测试它PHPUnit.我需要测试遗留功能的兼容性,这是一个XML POST.截至目前,我的第一个测试看起来像:

public function testPostMessages()
{
    $response = $this->call('POST', 'xml');

    $this->assertEquals(200, $response->getStatusCode());
}
Run Code Online (Sandbox Code Playgroud)

这传递得很好.我的列表中的下一步实际上是通过POST发送XML数据.所以对于我的第二次测试,我有:

public function testPostMessagesContent()
{
    $response = $this->call('POST', 'xml');

    $this->assertTrue(is_valid_xml($response->getContent()));
}
Run Code Online (Sandbox Code Playgroud)

此测试失败.但是,我没有发送我的XML数据.我如何发送XML?
现在,之后我需要添加功能以从请求中获取内容.我知道有一个Request对象我可以与之交互,但我不确切知道要调用哪种方法.如何从控制器中获取XML?


更新#1

在此期间我能够得到一些结果.我目前的测试看起来像这样:

public function testPostMessagesContent()
{
    $response = $this->call('POST', 'xml', array('key' => 'value'), array(), array(), array('content' => 'content'));
    $this->assertContains('~', $response->getContent());
}
Run Code Online (Sandbox Code Playgroud)

我只有波浪号,因为我知道它不匹配,所以我可以看到整个响应.在XmlController.php我有:

class XmlController extends Controller {
public function index(Request $request)
{
    return $request;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的输出PHPUnit如下:

1) XmlTest::testPostMessagesContent
Failed asserting …
Run Code Online (Sandbox Code Playgroud)

php xml phpunit laravel

45
推荐指数
3
解决办法
7万
查看次数

如何让phpunit从文件夹中的所有文件运行测试?

从我读过的内容来看,似乎我应该能够设置一个文件夹,例如tests /,用单元测试类放入一些文件,然后在该文件上运行phpunit并让它找到并运行测试.

无论出于何种原因,在我的安装中(在OS X上),它认为文件夹tests /是一个文件,或者看起来如此:

$ ls tests
test1.php test2.php
$ phpunit tests/test1.php
PHPUnit 3.5.3 by Sebastian Bergmann.

F

Time: 0 seconds, Memory: 5.00Mb

There was 1 failure:

1) FailingTest::testFail
Your test successfully failed!

/Users/****/tmp/tests/test1.php:4

FAILURES!
Tests: 1, Assertions: 0, Failures: 1.
$ phpunit tests/test2.php
PHPUnit 3.5.3 by Sebastian Bergmann.

.

Time: 0 seconds, Memory: 5.00Mb

OK (1 test, 1 assertion)
$ phpunit tests
PHP Fatal error:  Uncaught exception 'PHPUnit_Framework_Exception' with message 'Neither "tests.php" nor "tests.php" could be opened.' in …
Run Code Online (Sandbox Code Playgroud)

php pear phpunit

44
推荐指数
3
解决办法
3万
查看次数

在PHPUnit中,如何在对模拟方法的连续调用中指示不同的with()?

我想用不同的预期参数两次调用我的模拟方法.这不起作用,因为expects($this->once())第二次调用会失败.

$mock->expects($this->once())
     ->method('foo')
     ->with('someValue');

$mock->expects($this->once())
     ->method('foo')
     ->with('anotherValue');

$mock->foo('someValue');
$mock->foo('anotherValue');
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

$mock->expects($this->exactly(2))
     ->method('foo')
     ->with('someValue');
Run Code Online (Sandbox Code Playgroud)

但是如何添加with()来匹配第二个调用?

php phpunit mocking

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

如何使用PHPUnit在Symfony2中设置数据库密集的单元测试?

我对测试世界很陌生,我想确保我走在正确的轨道上.

我正在尝试使用phpunitsymfony2项目中设置单元测试.

PHPUnit正在运行,简单的默认控制器测试工作正常.(但这不是关于功能测试,而是单元测试我的应用程序.)

我的项目在很大程度上依赖于数据库交互,据我所知,从phpunit的文档中,我应该建立一个基于类的类\PHPUnit_Extensions_Database_TestCase,然后为我的数据库创建fixtures并从那里开始工作.

然而,symfony2只提供了一个WebTestCase只从\PHPUnit_Framework_TestCase开箱即用的类.

所以我是正确的,我认为我应该创建自己的DataBaseTestCase主要复制WebTestCase,唯一的区别是它扩展\PHPUnit_Extensions_Database_TestCase并实现其所有抽象方法?

或者是否有另一个"内置"推荐的symfony2工作流程涉及以数据库为中心的测试?

由于我想确保我的模型存储和检索正确的数据,我不想最终意外地测试学说的细节.

php phpunit symfony doctrine-orm

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

Phpunit测试发出警告没有在课堂上发现的测试

我正在尝试学习如何使用phpunit和laravel进行测试.使用phpunit命令启动测试时,我收到警告:

There was 1 failure:

1) Warning
No tests found in class "PostsTest".

FAILURES!                            
Tests: 2, Assertions: 1, Failures: 
Run Code Online (Sandbox Code Playgroud)

我的测试类名和文件名匹配.我已经阅读了有关不匹配名称的其他问题.我的文件名是PostsTest.php和我的测试文件:

class PostsTest extends ApiTester {


    public function it_fetches_posts()

    {
        $this->times(5)->makePost();

        $this->getJson('api/v1/posts');

        $this->assertResponseOk();

    }

    private function makePost($postFields=[])
    {
        $post = array_merge([
            'title' => $this->fake->sentence,
            'content' => $this->fake->paragragraph
        ], $postFields);

        while($this->times --)Post::create($post);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有必要,我的ApiTester:

use Faker\Factory as Faker;

class ApiTester extends TestCase {
    protected $fake;
    protected $times = 1;
    function __construct($faker)
    {
        $this->fake = Faker::create();
    }
} …
Run Code Online (Sandbox Code Playgroud)

php phpunit laravel

43
推荐指数
3
解决办法
2万
查看次数

标签 统计

phpunit ×10

php ×8

unit-testing ×3

laravel ×2

mocking ×2

pear ×2

doctrine ×1

doctrine-orm ×1

symfony ×1

tdd ×1

ubuntu ×1

xml ×1