我是测试新手,我不确定我是否以正确的方式进行:
我不想对特定的类进行单元测试,而是对从我的 ioc 容器中解决的任何类进行单元测试。在 ioc 容器中,我将接口绑定到具体类,如下所示:
示例(我正在使用 Laravel 5):
// in a service provider
public function register(){
$this->app->bind('FooInterface', function() {
return new SomeConcreteFoo;
});
}
然后我想编写单元测试,FooInterface
而不是SomeConcreteFoo
稍后可以与其他类交换。
我想这样做的原因是,在我看来,相关测试应该针对我的 ioc 容器返回的任何内容,因为这就是我将在应用程序中使用的内容。在我看来,测试应该在接口级别完成,因为这是我定义应用程序其余部分对我的班级的期望的地方。
我很难找到有关如何执行此操作的任何信息,这表明我可能会以错误的方式思考这个问题。例如,也许我想要完成的更像是集成测试而不是单元测试。
所以第一个问题是:我是否正在考虑以正确的方式进行测试?如果我不是 - 你对替代测试路径的最佳实践有什么建议吗?
第二个问题:如果我的想法是正确的 - 我如何设置 phpspec 以使用 Laravel IOC 容器,以便我可以针对 IOC 返回的任何内容进行测试..