小编Ric*_*ola的帖子

PHPUnit模拟对象的属性

我正在锁定一种模拟对象并填充其属性的方法.以下是使用另一个对象的属性的方法示例:

class MyClass {

    private $_object;

    public function methodUnderTest($object) {
        $this->_object = $object;
        return $this->_object->property
    }
}
Run Code Online (Sandbox Code Playgroud)

要单元测试这个方法我应该$objectgetMockBuilder()方法创建一个模拟PHPUnit.但我找不到一种方法来模拟属性$object,只是方法.

php phpunit unit-testing mocking mockery

18
推荐指数
2
解决办法
1万
查看次数

模拟在方法中间创建的对象

Class我知道在 a 中间创建 a 实例method是一种不好的做法,因为它使代码难以测试。但我无法重构代码,所以我需要找到一种方法来模拟在测试过程中Object创建的对象。newmethod

使用的框架:PHPUnit, Mockery,WP_Mock

示例:这里我需要模拟get_second_string()类实例中的方法ExternalClass

Class MyClass {

    function methodUnderTest($string) {
        $objToMock = new ExternalClass();
        $second_string = $objToMock->get_second_string();
        $final_string = $string . $second_string;
        return $final_string;
    }
}
Class TestMyClass extends PHPUnit_Framework_TestCase {
    public function setUp() {
    }
    public function tearDown() {
    }

    public function test_methodUnderTest() {
        $externalObject = $this->getMockBuilder('ExternalClass')
                               ->setMethods(['get_second_string'])
                               ->getMock;
        $externalObject->expects($this->once())
                       ->method('get_second_string')
                       ->willReturn(' two');
        $testObj = new MyClass();
        $this->assertEquals('one two', $testObj->methodUnderTest('one');
    } …
Run Code Online (Sandbox Code Playgroud)

php testing phpunit mockery

3
推荐指数
1
解决办法
4601
查看次数

防止在测试期间将 error_log() 消息打印到终端

正如标题所述,我期待找到一种方法来防止error_log()在测试期间在终端中打印消息PHPUnit

在此输入图像描述

在上面的示例中,被测试的方法通过 error_log('Don\'t show up'),在测试之间打印其消息。

有什么方法可以防止这种行为,让我的测试日志保持美观?另外,有什么方法可以捕获消息并测试其输出吗?(对于消息不是简单字符串的情况)。

php phpunit unit-testing error-log

2
推荐指数
1
解决办法
1467
查看次数

标签 统计

php ×3

phpunit ×3

mockery ×2

unit-testing ×2

error-log ×1

mocking ×1

testing ×1