繁体   English   中英

PHP单元测试-属性不存在

[英]php unit testing - Property does not exist

我正在为我的应用程序创建一些测试用例,但我陷入了困境。 我正在尝试为课程设置一个属性。 但是它是父类的属性。 这是我的实际方法

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:属性用户不存在

提前致谢。

如果我对您的理解正确,则可以使用扩展类API类上Uploads 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,
]);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM