小编r.b*_*gil的帖子

为PHPUnit创建基本测试类并将其扩展为常见功能会导致找不到类错误

我正在使用引导程序文件运行PHPUnit,用于自动加载类(由composer生成).

我的所有测试都很好地加载了类,但是对于我的两个测试,我创建了一个"基础"测试类,它扩展了PHPUnit_Framework_TestCase,然后是两个扩展基类的测试类,类似于以下示例代码的结构:

abstract class BaseTest extends PHPUnit_Framework_TestCase
{
    abstract function setUp();
    protected function getCommonTestVariables()
    {
        // ...
    }

    protected function runCommonTests()
    {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)
class BlahBlahTest extends BaseTest
{
    public function setUp()
    {
         $variables=$this->getCommonTestVariables();
         //etc...
    }

    public function testThings()
    {
        $this->runCommonTests();
    }
}
Run Code Online (Sandbox Code Playgroud)

每当我运行它时,PHPUnit都会出错:

致命错误:第13行的BlahBlahTest.php中找不到类'BaseTest'

我检查了文件名,位置,名称空间,一切似乎都是有序的.任何帮助将被理解为深究这一点

php phpunit unit-testing

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

使用HHVM运行phpunit测试(HipHop)

我试图在虚拟Ubuntu 12.04(64位服务器)安装上通过HHVM运行PHPUnit单元测试.测试通常使用位于我的tests目录中的phpunit.xml文件运行,该文件包含一个用于处理自动加载的引导文件,并且测试在普通的php安装上运行良好.但是,我一直在:

HipHop Fatal error: File not found: File/Iterator/Autoload.php in /usr/share/php/PHPUnit/Autoload.php on line 64
Run Code Online (Sandbox Code Playgroud)

运行时:

hhvm -f /usr/bin/phpunit /path/to/my/testsDirectory/SomeTest.php
Run Code Online (Sandbox Code Playgroud)

我还没有弄清楚如何使用bootstrap或配置文件在hhvm下运行phpunit ...任何帮助将不胜感激.

php phpunit unit-testing hhvm

10
推荐指数
2
解决办法
3890
查看次数

PHPUnit:模拟一个接受参数的方法

我正在为一个接收"搜索"类的类创建测试,该类使用搜索字符串搜索超市并且具有返回相应项的方法"getItem($ itemNo)".

所以,有点像这样:

class MyClass 
{
    public function __construct(Search $search) {
        $item0 = $search->getItem(0);
        $item1 = $search->getItem(1);
        // etc... you get the picture
    }
}
Run Code Online (Sandbox Code Playgroud)

我想模仿这个Search类,因为我不想每次进行测试时搜索超市.

所以我写了:

class MyClassTest extends PHPUnit_Framework_TestCase 
{
    public function setUp()
    {
        $searchResults=$this->getMockBuilder('Search')
                            //Because the constructor takes in a search string:
                            ->disableOriginalConstructor() 
                            ->getMock();

        $pseudoSupermarketItem=array( "SearchResult1", "SearchResult2", etc...);

        $this->searchResult
               ->expects($this->any())
               ->method('getItem')
               ->with(/*WHAT DO I PUT HERE SO THAT THE METHOD WILL TAKE IN A NUMBER*/)
               ->will($this->returnValue($pseudoSupermarketItem[/* THE NUMBER THAT WAS PUT IN */]));
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您在代码中看到的,我希望mock方法接受一个整数,如MyClass中所示,然后返回相应的pseudoSupermarketItem字符串.到目前为止,我不确定如何实现这一点,任何帮助表示赞赏!

php phpunit unit-testing

5
推荐指数
1
解决办法
5482
查看次数

是否可以为$ httpBackend响应设置通配符?

假设我在AngularJS中有以下测试代码:

var someURL;
var dummyJSON;
$httpBackend.whenGET(someURL).respond(dummyJSON);
Run Code Online (Sandbox Code Playgroud)

有没有办法使这个响应成为一组URL,而不仅仅是一个?例如,我希望它以对于以/ api /开头的任何url使用相同的虚拟JSON,而不是以/ app /开头.像通配符URL("/ app/*")?

谢谢您的帮助

javascript angularjs

4
推荐指数
2
解决办法
3448
查看次数

标签 统计

php ×3

phpunit ×3

unit-testing ×3

angularjs ×1

hhvm ×1

javascript ×1