unit-testing - 如何对使用类型提示的函数进行单元测试

标签 unit-testing symfony mocking phpunit type-hinting

假设我有一个包含使用类型提示的函数的类,如下所示:

class Testable 
{
    function foo (Dependency $dependency) 
    {

    }
}

我想对这个类进行单元测试 Testable使用此代码:
$dependencyMock = $this->getMockBuilder('Dependency')
        ->disableOriginalConstructor()
        ->getMock();


$testable = new Testable($dependencyMock);

如果我使用 PHPUnit 创建 $dependency 的 stub ,然后尝试调用函数 foo使用这个模拟(像上面一样),我会得到一个致命的错误,说:

Argument 1 passed to function foo() must be an instance of Dependency, instance of Mock_Foo given



如何使用 PHPUnit 对这个函数进行单元测试并仍然 stub $dependency ?

最佳答案

使用模拟时使用完整命名空间,它将解决模拟继承问题。

$dependencyMock = $this->getMockBuilder('\Some\Name\Space\Dependency')
    ->disableOriginalConstructor()
    ->getMock();
$testable = new Testable($dependencyMock);

关于unit-testing - 如何对使用类型提示的函数进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20446771/

相关文章:

c# - 如何在单元测试 C# 中的多个线程中重复运行 TestMethod

unit-testing - 如何在 `click` AppBar 的图标按钮上测试 `material-ui` 事件?

unit-testing - JSON渲染对于ControllerUnitTestCase中的域对象失败

php - 覆盖 symfony radio 部件

mocking - OpenAPI 3.0 模拟生成器

python - 我们如何确保 Mock.call_args_list 中的调用包含参数与调用 Mock 对象时处于相同状态的调用?

unit-testing - 在 Nestjs 中 Jest 单元测试模拟 google oauthClient

javascript - 获取输入的动态值 JQuery + Twig

symfony - DELETE 查询在 DQL 学说 Symfony2 中不起作用

c# - 如何避免大型多步骤单元测试?