如何编写可测试的代码并能够对其进行测试?

How to write testable code and be able to test it?

我正在为将加载应用程序配置(如 "debug" 值)和其他服务配置的 Silex 应用程序编写 ConfigServiceProvider。在这样的提供程序中,我需要从文件系统读取实际的 yaml 文件,解析它,然后加载到 $app。这是此提供程序的主要目的。但是我该如何测试这段代码呢?我应该测试它,还是我可以模拟功能?

private function /*ConfigServiceProvider::*/parseYamlFile($filename)
{
    return $app["yaml.parser"]->parse(file_get_content(
        $app["config.locator"]->locate($filename)));
}

在此方法中唯一可以测试的是是否进行了正确的调用。

你通过模拟解析器和配置定位器来测试它,你还需要摆脱 file_get_content 调用,使用一个库,并模拟它。

如果您想检查 yaml 解析器是否按预期工作,那么您应该为该库编写一个测试。