php 属性不存在



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

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(BxClientCoreApiUploads::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']
]));

更新这是错误

反射异常:属性用户不存在

提前谢谢。

如果我理解正确的话,你有扩展类API的类Uploads。类API在属性_BxApi中具有内部对象。这个内部对象有场users。但是在代码中,您尝试将属性设置为Uploads的实例,而不是字段中_BxApi内部对象。

您应该_BxApi字段中将字段users设置为内部对象。

更新:

您的代码应类似于以下伪代码:

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

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

最新更新