【发布时间】:2016-10-13 13:16:19
【问题描述】:
我通过 PHPSpec 生成了以下类:
class Consumer
{
public function __construct($accesskey, $accessToken)
{
// TODO: write logic here
}
}
当我测试构造函数时,我得到一个错误,它缺少参数 1。下面是我编写行为的方式:
namespace spec\Zizy\Aggregator\Context;
use Zizy\Aggregator\Context\Contract\ContextContractInterface;
use Zizy\Aggregator\Context\Consumer;
use PhpSpec\ObjectBehavior;
use Prophecy\Argument;
class ConsumerSpec extends ObjectBehavior
{
function it_is_initializable()
{
$this->beConstructedWith( md5('samplekey'), md5('sampletoken') );
$this->shouldHaveType(Consumer::class);
}
/**
* This spec describes how we would access our consumer directry
*/
public function it_gets_access_token()
{
$this->getAccessToken()->shouldReturn(md5('sampletoken'));
}
}
以下是我在运行 PHPSpec 时遇到的错误。
Zizy\Aggregator\Context\Consumer 21 - it gets access token
warning: Missing argument 1 for Zizy\Aggregator\Context\Consumer::__construct() in C:\wamp64\www\spikes\src\Context\Consumer.php line 7
我也尝试通过接口测试我的消费者,但 PHPSpec 一直告诉我它找不到接口,但在类上下文中因此为我提供了创建类的机会,同时它实际上应该是一个接口。
如何通过 PHPSpec 的接口编写代码?
【问题讨论】:
-
我知道这一点,但提供这样的背景是合适的,这样任何来救我的人都能真正了解我的来源,因为对我来说,问题不仅仅是 PHPSpec,而是还有我第一次使用这个库的事实,也许需要修复的是我的思维过程而不是我的代码实现。我希望这对你来说是一个令人满意的理由。
-
公平。我将尝试编辑我的问题,使其不包含不必要的信息。谢谢
-
不确定,但过去我在规范类名称方面遇到过问题,请尝试将
ConsumerBehavior重命名为ConsumerSpec -
嗨 @gfv 即使将 eclass 名称更改为
ConsumerSpec我仍然遇到同样的问题。我将花更多时间研究这个工具,因为我对它如何从头开始处理开发感兴趣。感谢您的宝贵时间。 -
如果您粘贴您想要指定的完整课程代码,我可能会进一步帮助您。