在我对服务的验收测试中,我按如下方式设置了测试人员:
var dataService = A.Fake<IDataService>();
this.domainRepository = A.Fake<IDomainRepository>();
var dbContextArticles = A.Fake<IDbContextArticles>();
this.testee = new DomainService(dataService, this.domainRepository, dbContedbContextArticles xtArtikel);
这个设置很遗憾,因为。
DomainService
类继承自BaseDataService
。BaseDataService
有一个静态构造函数,如下所示:DbContext.LoadTranslations();
DbContext.LoadTranslations();
看起来像这样:using (DomainEntities entities = new DomainEntities(DbBase.ConnectionString))
{ ... }
因此,当我创建DomainService
的实例时,它失败了,因为我的验收测试中没有定义连接字符串,因为我不想使用真正的数据库。
根据评论,翻译必须在静态构造函数中加载,否则在搜索文章时会加载8次...
我尝试引入ContextFactory
但问题是,BaseDataService
的静态构造函数调用静态方法DbContext.LoadTranslations()
,因此我无法将IContextFactory
注入{ {1}}因为甚至没有调用此构造函数...
感谢您的任何建议。