【问题标题】:PHPUnit mock concatenated functionPHPUnit 模拟连接函数
【发布时间】:2015-10-03 01:34:59
【问题描述】:

我正在编写一些测试,我想知道如何模拟下一个连接的函数调用:

$validator->errors()->all()

我不需要错误集合,因为我希望它是空的,这样$this->logerror 就不会被调用。

是否可以一次调用模拟$validator->errors()->all()

类似

    Validator::shouldReceive('errors()->all()')
        ->once()
        ->andReturn(array());

Code:
// CLASS

    $validator = Validator::make(
            ['participant' => $participant'],
            $programValidator->getRules()
    );

    if($validator->fails()) {
        foreach($validator->errors()->all() as $error) {
           $this->logError($record, $error);
    }

// TEST
Validator::shouldReceive('make')
            ->once()
            ->andReturn(Mockery::mock(array('fails' => true)));

【问题讨论】:

  • 你必须模拟所有的方法调用,所以你必须弄清对方法errors()的调用应该返回一个同样模拟的对象,在all()方法调用中返回一个空数组。要获得完整的答案,您需要指定您使用的框架和版本,至少在调用 call 方法时返回的对象类型。希望对您有所帮助。

标签: unit-testing phpunit mockery


【解决方案1】:

你试过了吗:

Validator::shouldReceive('errors->all')
    ->once()
    ->andReturn(array());

这个答案也可能是相关的:https://stackoverflow.com/a/22435748/5072503

【讨论】:

    猜你喜欢
    • 2019-04-06
    • 2017-01-13
    • 2016-01-30
    • 2020-05-08
    • 2015-12-18
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    相关资源
    最近更新 更多