gpt4 book ai didi

php - Mockery 中的重载和别名有什么区别?

转载 作者:可可西里 更新时间:2023-11-01 13:07:50 26 4
gpt4 key购买 nike

我刚开始使用 Mockery并与术语 aliasoverload 混淆。谁能给我解释一下什么时候使用哪个?

最佳答案

Overload 用于创建“实例模拟”。当创建一个类的新实例时,这将“拦截”并且将使用模拟。例如,如果要测试此代码:

class ClassToTest {

public function methodToTest()
{
$myClass = new MyClass();
$result = $myClass->someMethod();
return $result;
}
}

您将使用 overload 创建一个模拟实例,并像这样定义期望:

 public function testMethodToTest()
{
$mock = Mockery::mock('overload:MyClass');
$mock->shouldreceive('someMethod')->andReturn('someResult');

$classToTest = new ClassToTest();
$result = $classToTest->methodToTest();

$this->assertEquals('someResult', $result);
}

Alias 用于模拟公共(public)静态方法。例如,如果要测试此代码:

class ClassToTest {

public function methodToTest()
{
return MyClass::someStaticMethod();
}
}

您将使用 alias 创建别名模拟并定义如下期望:

public function testNewMethodToTest()
{
$mock = Mockery::mock('alias:MyClass');
$mock->shouldreceive('someStaticMethod')->andReturn('someResult');

$classToTest = new ClassToTest();
$result = $classToTest->methodToTest();

$this->assertEquals('someResult', $result);
}

关于php - Mockery 中的重载和别名有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31219542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com