据我了解,模拟应该取代真正的 WordPressBridge,但事实并非如此。我的原版还在用。我错过了什么吗?
基本上你必须在 Symfony 容器中以某种方式替换你的服务。
如果您进行“功能测试”,那么您可能应该为以下内容创建测试“虚拟”服务"test"env 将会覆盖原来的。你可以这样做:
in src/YourBundle/Resources/config/services.yml
services:
api.wp_bridge:
class: %api.wp_bridge.class%
arguments: [@service_container]
in 应用程序/配置/config.yml
parameters:
api.wp_bridge.class: "ApiBundle\Util\WordPressBridge"
in 应用程序/配置/config_test.yml
parameters:
api.wp_bridge.class: "ApiBundle\Util\TestWordPressBridge"
然后功能测试将使用“ApiBundle\Util\TestWordPressBridge” - 因为它是在"test" env.
您可以尝试模拟容器并将其传递给测试内核,但是如果没有其他模拟库(在纯 PHPUnit 中),这可能会很痛苦。
我个人正在使用phpspec2 http://phpspec.net/对于“单元”测试,其中模拟很容易:)以及对于我正在使用的一些“接受标准”东西behat http://behat.org/ and mink http://mink.behat.org/