PHPSpec shouldBeCalled() method



我不知道这个方法是如何工作的。下面是我尝试使用它的例子:

namespace spec;
use PhpSpecObjectBehavior;
class MyObjectSpec extends ObjectBehavior
{
    /**
     * @param SomeEvent $event
     * @param SomeSubscriber $subscriber
     */
    function it_formats_the_string_as_a_header_if_underline_with_single_dashes(
        $event,   
        $subscriber
    )
    {
        $subscriber->onChange($event)->shouldBeCalled(); //RIGHT HERE
        // when
        $this->addSubscriber($subscriber);
        $this->doWhatever($event);
    }
}
class SomeEvent {}
class SomeSubscriber
{
    function onChange($event){}
    function usesOnChange(){
        $someEvent = new SomeEvent();
        $this->onChange($someEvent);
    }
}

命名空间正确,文件分别在ObjectSpec.php, SomeEvent.php(在src文件夹中)和somessubscriber .php(在src文件夹中)。这给了我一个错误没有调用已经匹配,但至少有一个是预期的为什么这不起作用?谢谢你!

能否提供MyObject的实现?如果你想得到一个正确的答案,这将是有帮助的。

当你试图创建对象方法->shouldBeCalled()的模拟时,基本上意味着方法onChange()和参数$event应该在对象$subscriber上调用。

你得到的消息基本上意味着这个方法没有被调用,现在是你应该实现它的步骤。

我已经提供了你的类的基本实现,在PHPSpec运行中给出成功的结果。

<?php
class MyObject
{
    private $subscribers = array();
    public function addSubscriber($subscriber)
    {
        $this->subscribers[] = $subscriber;
    }
    public function doWhatever($event)
    {
        foreach($this->subscribers as $subscriber) {
            $subscriber->onChange($event);
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新