我正在使用引导程序文件运行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'
我检查了文件名,位置,名称空间,一切似乎都是有序的.任何帮助将被理解为深究这一点
我试图在虚拟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 ...任何帮助将不胜感激.
我正在为一个接收"搜索"类的类创建测试,该类使用搜索字符串搜索超市并且具有返回相应项的方法"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字符串.到目前为止,我不确定如何实现这一点,任何帮助表示赞赏!
假设我在AngularJS中有以下测试代码:
var someURL;
var dummyJSON;
$httpBackend.whenGET(someURL).respond(dummyJSON);
Run Code Online (Sandbox Code Playgroud)
有没有办法使这个响应成为一组URL,而不仅仅是一个?例如,我希望它以对于以/ api /开头的任何url使用相同的虚拟JSON,而不是以/ app /开头.像通配符URL("/ app/*")?
谢谢您的帮助