在测试类中模拟方法

时间:2015-09-30 18:24:28

标签: php phpunit

我正在使用PHPUnit 4.6.4

我很难理解如何在测试类中模拟一个方法,我在网上看了一些其他的例子,但似乎没有用。

我在Auth类中有以下函数

    public function check_that_user_is_admin() {
        if ($this->get_user_role() !== '1') {
            // only admin allowed to perform this action
            return FALSE;
        }

        return TRUE;
    }

'get_user_role'检查活动会话以查看当前用户具有的用户级别并返回其值。

这是对上述功能的测试

    public function testAuth() {
            $mock = $this->getMockBuilder('Auth')->disableOriginalConstructor()->getMock(array('get_user_role'));
            $mock->expects($this->once())->method('get_user_role')->with($this->returnValue(1));

            $this->assertTrue($mock->check_that_user_is_admin());
    }

我每次运行测试时都收到: “无法断言null为真。”

1 个答案:

答案 0 :(得分:0)

我碰巧找到答案......

    $mock = $this->getMockBuilder('Auth')
        ->disableOriginalConstructor()
        ->setMethods(array('get_user_role'))
        ->getMock();

    $mock->expects($this->once())
        ->method('get_user_role')
        ->willReturn("2");

    $this->assertFalse($mock->check_that_user_is_admin());