【问题标题】:Mockery testing constructor call, new keyword嘲弄测试构造函数调用,新关键字
【发布时间】:2013-06-30 04:49:46
【问题描述】:

我有一个类名作为字符串属性。一种方法 (fetchObject) 创建此类的新实例。我想用 PHPUnit 和 Mockery 测试这个方法。

这是代码

class Maker
{
    private $_className = 'Article';

    public function fetchObject( $array )
    {
        return new $this->_className( $array );
    }
}

我试过这样的

$data = array( 'title' => 'Amazing title' );
$article = m::mock( 'Article', array( $data ) );

$maker= new Maker;
$result = $maker->fetchObject( array() );

测试有效,但我不确定它是否检查构造函数调用,也不知道如何检查参数是否通过。

【问题讨论】:

    标签: php phpunit mockery


    【解决方案1】:

    通常你会模拟 Maker() 类,并确保它从模拟中返回,即你正在寻找的对象。

    我为测试这样的事情所做的另一个选择是简单地测试 Maker 并使用给定的类期望调用 fetchObject() 例程,然后使用 InstanceOf 检查返回的对象是否属于所需的类。

    【讨论】:

    • 谢谢@steven。我组成了一个简单的类,我在 $_className 中设置,就像你在第二个解决方案中写的那样。此外,它的构造函数将 $array 设置为属性,因此我可以检查 Maker 是否正在传递它。
    猜你喜欢
    • 2021-03-03
    • 1970-01-01
    • 2019-02-27
    • 2020-06-08
    • 2020-09-06
    • 2015-11-12
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多