Php 模拟一个类,编辑一个方法并使用另一个方法

Php 模拟一个类,编辑一个方法并使用另一个方法,php,unit-testing,mocking,mockery,Php,Unit Testing,Mocking,Mockery,我正在尝试测试一种方法,这取决于另一种方法。第一个方法注册用户,但必须检查给定的用户名是否可用 我尝试了一些测试类的东西 class Test { public function a() { return "ac"; } public function b() { return $this->a(); } } 我想模拟类并编辑方法“a”的行为 我试着跟着 $m = new Test(); $mock = \Mockery

我正在尝试测试一种方法,这取决于另一种方法。第一个方法注册用户,但必须检查给定的用户名是否可用

我尝试了一些测试类的东西

class Test {
    public function a() {
        return "ac";
    }

    public function b() {
        return $this->a();
    }
}
我想模拟类并编辑方法“a”的行为

我试着跟着

$m = new Test();

$mock = \Mockery::mock($m);
$mock->shouldReceive("a")
         ->andReturn("ad");

echo $mock->b();
但方法“a”保持不变

我如何编辑方法“a”的行为,或者,我如何以其他方式进行编辑


谢谢

您可以编写这样的测试:

public function testMethodB() 
{
    $test = \Mockery::mock('Test[a]');
    $test->shouldReceive('a')->andReturn('ad');

    assertEquals('ad', $test->b());
}

我认为它有效

您可以编写这样的测试:

public function testMethodB() 
{
    $test = \Mockery::mock('Test[a]');
    $test->shouldReceive('a')->andReturn('ad');

    assertEquals('ad', $test->b());
}
我认为它有效