gpt4 book ai didi

PHPSpec shouldBeCalled() 方法

转载 作者:行者123 更新时间:2023-11-28 20:32:02 26 4
gpt4 key购买 nike

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

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com