作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不知道这个方法是如何工作的。这是我尝试使用它的示例:
namespace spec;
use PhpSpec\ObjectBehavior;
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 文件夹中)和 SomeSubscriber.php(在 src 文件夹中)。这给了我一个错误 No Call has been matched but at least one was expected 为什么这不起作用?谢谢。
最佳答案
您能否提供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);
}
}
}
关于PHPSpec shouldBeCalled() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17199316/
我不知道这个方法是如何工作的。这是我尝试使用它的示例: namespace spec; use PhpSpec\ObjectBehavior; class MyObjectSpec extends O
我是一名优秀的程序员,十分优秀!