我正在为一个接收“搜索”类的类创建测试,该类使用搜索字符串搜索超市,并有一个返回相应项目的方法“getItem($itemNo)”。
所以,有点像这样:
class MyClass
{
public function __construct(Search $search) {
$item0 = $search->getItem(0);
$item1 = $search->getItem(1);
// etc... you get the picture
}
}
我想模拟这个 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 */]));
}
}
正如您在代码中看到的那样,我希望模拟方法接受一个整数,如 MyClass 中所示,然后它将返回相应的 pseudoSupermarketItem 字符串。到目前为止,我不确定如何实现这一点,感谢任何帮助!