首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PHPSpec测试创建项的类

如何使用PHPSpec测试创建项的类
EN

Stack Overflow用户
提问于 2016-01-08 05:57:53
回答 2查看 375关注 0票数 0

我上的课主要是关于这个的

代码语言:javascript
复制
$newItem = new SeriesDiscountDecorator($item);
$cart->remove($item);
$cart->add($newItem);

我的规格看起来像是

代码语言:javascript
复制
$decoratedItem1->beConstructedWith([$item1]);
$cart->add($decoratedItem1)->shouldBeCalled();

但是PHPSpec说由于参数错误,没有进行正确的$cart->add调用。事实上,我的$decoratedItem与Cart类创建的对象不同。如何编写这样的规范,对吗?

PHPSpec返回:

代码语言:javascript
复制
method call:
    - add(Domain\Discount\Decorator\SeriesDiscountDecorator:000000006b0917e60000000063743658 Object (
        'decoratedItem' => Double\ItemInterface\P66:000000006b0917a60000000063743658 Object (
        'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)
          )
      ))
    on Double\Domain\Cart\Cart\P65 was not expected, expected calls were:
        - add(exact(Double\Domain\Discount\Decorator\SeriesDiscountDecorator\P69:000000006b0917f90000000063743658 Object (
        'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)
              'decoratedItem' => PhpSpec\Wrapper\Collaborator:000000006b0917b30000000063743658 Object (
        'prophecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)
              )
        )))
EN

回答 2

Stack Overflow用户

发布于 2016-05-24 15:16:23

代码语言:javascript
复制
$cart->add(SeriesDiscountDecorator::class)->shouldBeCalled();

这似乎是测试它的唯一方法,只要您在指定的类中实例化对象,并且不返回它。

票数 0
EN

Stack Overflow用户

发布于 2022-02-02 19:36:52

这是一个令人难以置信的老版本,但是使用phpspec 2.5.8。我能够在collaborator上使用getWrappedObject()方法完成这个任务。因此,该规范将如下所示:

代码语言:javascript
复制
$decoratedItem1->beConstructedWith([$item1]);
$cart->add($decoratedItem1->getWrappedObject())->shouldBeCalled();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34665930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档