【问题标题】:PHPunit mock returns always nullPHPunit 模拟返回始终为空
【发布时间】:2018-11-04 23:38:26
【问题描述】:

我正在模拟一个类来测试它的方法,但是我无法设置所需的返回值。 这是我所做的

 <?php

namespace Tests\Unit;

use PHPUnit\Framework\TestCase;
use Lopo\Payment;

class PaymentTest extends TestCase
{
    public $stub;

    public function setUp()
    {
        $this->stub = $this->createMock(Payment::class);
    }

    public function testProceedPaymentMethod()
    {
        $this->stub->expects($this->any())->method('proceed')
        ->will($this->returnValue('fooo'));

        var_dump($this->stub->proceed(10)); // not returning fooo 

    }
}

我试过没有设置方法 我尝试使用createMockgetMockBuilder(),但总是得到NULL,而不是指定的返回值。

我该如何解决这个问题?

【问题讨论】:

  • 能贴出模拟类的代码吗?
  • 你用的是什么版本的phpunit?我无法复制这个 - 你发布的代码对我来说看起来不错(尽管它需要稍微复杂一些 - 请参阅塞巴斯蒂安的回答)。
  • 我使用的是版本 7
  • 检查方法是否声明为私有

标签: php mocking phpunit


【解决方案1】:

你想要$this-&gt;stub-&gt;method('proceed')-&gt;willReturn('foo');

【讨论】:

  • 我也试过了,但var_dump($this-&gt;stub-&gt;proceed(10)); 仍然返回NULL?我不确定我错过了什么?
  • 我目前遇到与 PHPUnit 7.5.20 相同的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-30
  • 1970-01-01
  • 1970-01-01
  • 2015-04-30
  • 2016-09-01
相关资源
最近更新 更多