0
对不起,我没有太多的代码可供分享,因为我不确定这将如何工作。如何将测试项目中的依赖项传递给DryIoc中的具体实现
我有一个名为API.Tests的测试项目,我正在为API项目中的NewsController编写测试。我不知道如何将测试依赖项传递给API,因为它是单向引用。
NewsController
private IGetNews _getNews;
private IAddNews _addNews;
private ILoggingService _log;
public NewsController()
{
_getNews = RegisterDependencies.container.Resolve<IGetNews>();
_addNews = RegisterDependencies.container.Resolve<IAddNews>();
_log = RegisterDependencies.container.Resolve<ILoggingService>();
}
是的,这是做它的经典方式正是我以前用的,但问题是我怎么告诉DryIoC在API项目中使用不同的注册依赖从API.Tests项目中,因为测试的实施具体的类是在API.Tests项目中? 我应该能够简单地告诉DryIoc“嘿解决这个实施IGetNews,而不是”,而不必通过的东西,并不需要被嘲笑一个模拟。 –
我还应该提到这是一个Web API控制器,所以它必须有一个空白的构造函数。 –
@ChristopherJohnson,Web API控制器不必**必须有空白的构造函数**。这是一个默认的误导性错误消息,框架引发了尝试初始化控制器时发生的任何错误。您需要阅读框架,并且还需要检查您的设计,因为您已经发现,由于糟糕的设计选择而难以测试。你所呼叫DI模式实际上是服务定位器ANIT模式。 – Nkosi