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 执行,同时注入并模拟它们。
我有以下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 执行,同时注入并模拟它们。