【发布时间】:2020-10-25 15:18:52
【问题描述】:
我有一个使用 mongoDB 创建新文档的保存功能
public function save(User $user): User
{
$result = $this->usersCollection->insertOne($user->getUser());
$user->setId($result->getInsertedId());
return $user;
}
并更改 __construct 以进行实施测试
public function __construct($db = null)
{
if (is_null($db)) {
parent::__construct();
} else {
$this->db = $db;
}
$this->usersCollection = $this->db->users;
}
我为保存功能编写了这个测试
public function testSave()
{
$mongo = \Mockery::mock('MongoDB\Client');
$mongo->shouldReceive('insertOne')->andReturn("ok");
$mongo->shouldReceive('selectDatabase')->andReturnSelf();
$user = new User('jack', '0015005050');
$um = new UserMongoDB($mongo);
$res = $um->save($user);
}
一切正常,但我的问题是$result->getInsertedId() 如何模拟此功能?
错误:在字符串上调用成员函数 getInsertedId()
【问题讨论】:
标签: php mongodb phpunit mockery