2016-01-31 42 views
0

我有问题phpspec功能 - shouldReturn。我有工厂创建图像对象,我想测试该工厂。PHPSpec应该返回正确的值

public function create($imageParams) 
{ 
    $image = new Image; 
    $image->setName($imagesParams['name']); 
    return $image; 
} 

phpspec:

public function it_create_image_object() 
{ 
    $image = new Image; 
    $image->setName('Example Name'); 
    $imageParams = ['name'=>'Example Name']; 
    $this->create($imageParams)->shouldReturn($image); 

} 

PHPSpec抛出异常:它创建期望图像对象 [OBJ:应用程序\ ImagesBundle \实体\图片],但得到 [OBJ:AppImagesBundle \实体\图片]。

为什么PHPSpec抛出异常而不是返回绿灯?

+0

某处有问题,你的命名空间 - '应用程序\ ImagesBundle'是不一样的'AppImagesBundle' –

回答

1

spec类永远不会工作,因为您不能存储在spec'ed类中实例化的对象。 在你的天赋测试,你必须检查返回的类型和值,就像这样:

public function it_create_image_object() 
{ 
    $imageParams = ['name'=>'Example Name']; 
    $image = $this->create($imageParams); 

    $image->getName()->shouldReturn('Example Name'); 
    $image->shouldHaveType('App\ImagesBundle\Entity\Images'); 
} 
+0

感谢帮帮我。那正确的答案! – Matrix12