PHPspec 赋值和测试更新

PHPspec assign value and test update

我有以下class

class Customer {}

它具有 Id、Name、City 和 Country 等属性以及 findById 和 findByCity 等方法。我想编写一个规范测试来测试我的 Customer::save() 函数是否像这样工作

function it_should_update_customer_name_on_save()
{
$customer = $this->findById(1);
$customer->Name = 'Compu-Global-Hyper-Mega-Net';
$customer->save();

$this->findById(1)->shouldReturn('Compu-Global-Hyper-Mega-Net');
}

但是 phpspec 一直向我反馈这个错误

! it should update name on save (111ms)
        error: Argument 1 passed to PHPSpec2\Wrapper\ArgumentsUnwrapper::unwrapAll() must be of the type array, string given,
        called in /Users/kristiannissen/Documents/php/phpecosrv/vendor/phpspec/phpspec2/src/PHPSpec2/Prophet/ObjectProphet.php
        on line 126 and defined in
        /Users/kristiannissen/Documents/php/phpecosrv/vendor/phpspec/phpspec2/src/PHPSpec2/Wrapper/ArgumentsUnwrapper.php line
        10

我应该如何进行这种测试?

您正在执行模型和数据库之间的集成测试,这不是 phpspec 的目标。 无论如何,Customer 的保存责任不应该在 customer Class 内部,它应该在域服务中。 findById 应由存储库 class 执行,save 应由实体管理器 class 执行,同时注入并模拟它们。