写Laravel测试代码(4)

在写单元测试时,有时候需要测试A class 的 protected or private method,可以使用 Class Reflection 来做,而不是去改成public,破坏封装

laravel 的 abstract TestCase class 中添加一个方法就行:

    /**
     * Call protected or private method of a class.
     *
     * @param object $object      instantiated object that we will run method on.
     * @param string $method_name method name to call
     * @param array  $parameters  array of parameters to pass into method.
     *
     * @return mixed Method return.
     */
    protected function invokeNonPublicMethod($object, string $method_name, ...$parameters)
    {
        $reflection = new ReflectionClass(get_class($object));
        $method     = $reflection->getMethod($method_name);
        $method->setAccessible(true);

        return $method->invokeArgs($object, $parameters);
    }

然后在 test case 中这样写测试就行:

final AccountTest extends TestCase
{
    public function testValue()
    {
        $account = new Account()
        
        // actual
        $values = $this->invokeNonPublicMethod($account, 'privateMethod', [1, 2, 3]);
        // $values = $this->invokeNonPublicMethod($account, 'protectedMethod', [2, 3, 4]);
        
        // assert
        ...
    }

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WeTest质量开放平台团队的专栏

从头到脚说单测——谈有效的单元测试(上篇)

? 作 者 杨迪,腾讯PCG高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。 作者导语 从4月份至今,我能够全身心投入到腾讯新闻...

31420
来自专栏Python编程 pyqt matplotlib

K -近邻算法(kNN)(二)

本篇介绍用kNN算法解决 手写数字的图片识别问题。数据集使用的是MNIST手写数字数据集,它常被用来作为深度学习的入门案例。数据集下载网址:http://yan...

9120
来自专栏FunTester

APP测试工程师“养成”记(三)

二、安装/卸载 1.真机的安装,卸载 2.第三方软件协助安装/卸载 3.模拟器上的安装/卸载

13210
来自专栏FunTester

“双花”BUG的测试分享

“双花”一词我是从区块链领域的听到的,查了一下资料,基本所有的引用都是基于区块链,但是今天所讲的“双花”不是区块链领域,而是普通的接口测试中遇到的BUG,由于概...

11320
来自专栏Python无止境

如何通过测试提升 Python 代码的健壮性

花下猫语:本文是《提升你的 Python 项目代码健壮性和性能》系列的第二篇。该系列主要讲解一些提升代码健壮性的姿势和小技巧。参见 第一篇

9220
来自专栏杨建荣的学习笔记

Orchestrator初试

非常经典的方案就是MHA了,可能很多同学会说这个方案有些过时了,确实有一些时代烙印,这个方案推出10多年了,它推出时的年代是没有现在这种社区繁荣的,在高可用...

11110
来自专栏WeTest质量开放平台团队的专栏

从头到脚说单测——谈有效的单元测试(下篇)

? 作 者 杨迪,腾讯PCG高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。 WeTest 导读 在《从头到脚说单测——谈有效的单...

24230
来自专栏VoiceVista语音智能

Vocalize.ai评估报告 - 唤醒性能竞争力分析

Vocalize.ai于6月份发布了其第三方评估报告。该报告基于同样的测试环境硬件和软件环境,重点对比分析了目前市面上在售Alexa唤醒词解决方案。在测试前,没...

8420
来自专栏WeTest质量开放平台团队的专栏

腾讯UnLua正式开源了!

? 腾讯UnLua正式开源了! 欢迎到:https://github.com/Tencent/UnLua下关注、加星和加Fork。 UnLua是Unreal ...

50030
来自专栏FunTester

使用monkey测试时,一个控制WiFi状态的多线程类

9610

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励