gpt4 book ai didi

php 单元测试 - 属性不存在

转载 作者:行者123 更新时间:2023-11-28 20:49:56 25 4
gpt4 key购买 nike

我正在为我的应用程序创建一些测试用例,但我卡在了某个点上。我正在尝试为该类设置一个属性。但它是一个父类属性。这是我的实际方法

public function uploadFiles($files, $endpoint = 'outbox', $config = [])
{
$user = $this->_BxApi->users->getUser($config);
$result = [];
foreach ($files as $key => $file) {
$policy = 'policy' . $key;
$result[] = $this->_fileUploader->uploadFile($file, $policy, $config);
}

return $result;
}

这是 Uploads 类中的一个方法,它扩展了 API 类,API 类是

class Api
{

public function __construct(BxClient $bxclient)
{
$this->_BxApi = $bxclient;
}
}

我的测试用例是

public function testUploadFiles_Upload2Files()
{
$bxMock = $this->_getMock(\BxClient\Core\Api\Uploads::class, [
'_request' => true
]);

$this->_setProperty($bxMock, 'users', $this->_getMock(Users::class, [
'getUser' => (object) ['userId' => 'test']
]));
$this->_setProperty($bxMock, '_fileUploader', $this->_getMock(FileUploader::class, [
'uploadFile' => true,
]));

$result = $bxMock->uploadFiles(['1.txt', '2.txt']);

$this->assertEquals(2, count($result));
$this->assertTrue($result[0]);
$this->assertTrue($result[1]);
}

我觉得我做错了什么

$this->_setProperty($bxMock, 'users', $this->_getMock(Users::class, [
'getUser' => (object) ['userId' => 'test']
]));

更新这是错误

ReflectionException: Property users does not exist

提前致谢。

最佳答案

如果我没理解错的话,你的类(class)是Uploads扩展类 API .类 API在属性中有内部对象 _BxApi .这个内部对象有字段 users .但是在代码中,您尝试将属性设置为 Uploads 的实例而不是来自 _BxApi 的内部对象字段。

你应该设置字段 users_BxApi 中的内部对象字段。

更新:

你的代码应该看起来像这样的伪代码:

$bxMock = $this->_getMock(BxClient::class, [arguments goes here]);
$this->_setProperty($bxMock, 'users', $this->_getMock(Users::class, [
'getUser' => (object) ['userId' => 'test']
]));
$uploads = $this->_getMock(\BxClient\Core\Api\Uploads::class, [
'_BxApi' => $bxMock,
]);

接下来的主要思想 - 首先,您创建将放置到 $bxMock 的内部对象 ( Uploads)实例,然后创建 Uploads 的实例本身并将您之前创建的内部对象 ($bxMock) 放入其中。

关于php 单元测试 - 属性不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50795709/

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