我有3节课。
class Box{
public $item1;
public $item2;
public function __construct($item1,$item2){
$this->item = $item1;
$this->item2 = $item2;
}
public function getItem1(){
return $this->item1;
}
}
class Details{
public $stuff
public $item1;
public $item2;
public $item3;
public function __construct($stuff){
$this->stuff = $stuff
}
public function setItem1($item){
$this->item1 = $item;
}
public function setItem2($item){
$this->item2 = $item;
}
}
class Crate{
public $box;
private $stuffString = "Stuff";
public function __construct(Box $box){
$this->box = $box;
}
public function getDetails(){
$details = new Details($stuffString);
$details->setItem1($box->item1);
$details->setItem2("Detail");
return $details;
}
}
该Crate->getDetails()方法返回一个带有来自 Box 对象的数据的 Details 对象。我想为此方法编写测试。
function test_get_details(){
$box = Mockery::mock(Box::class);
$box->shouldReceive('getItem1')->andReturn("BoxItem");
$crate= new Crate($box);
$details = $crate->getDetails();
$this->assertInstanceOf(Details::class,$details);
}
我创建了 Box 类的模拟并将其传递给 Crate 的构造函数。当我调用$crate->getDetails();它时,它应该返回一个 Details 对象
$item1 = "盒子物品"
$item2 = "详细信息"
$item3 = 空
我知道我可以通过对每个项目$this->assertEquals("BoxItem",$details->item1);等进行测试...但这是最好的方法吗?是否有一些 PHPUnit 工具来构建所需的详细信息结果并进行比较
例如
$this->assertEquals(MockDetailObject,$details)
还是我必须做一系列的断言来确保结果是我所期望的。
笔记*
对于我的示例,我知道这没什么大不了的,我快速构建它以解释我的意思。但是在我正在处理的代码中,我遇到了相同类型的问题,除了 Details 对象比 3 个字符串更复杂。
手掌心
宝慕林4294392