对不起,我不知道存储库模式,单元测试和orm工具.
我一直在研究单元测试和存储库模式,得出了一些结论,我想知道我是不对的.
存储库模式有助于在控制器中替换单元测试,例如使用它,对吧?因为创建上下文(在EF中)或会话(在NH中)更难,对吧?存储库本身未经过测试?为什么?
使用EntityFramework或NHibernate与存储库模式,如果我想测试我的存储库,我需要进行集成测试?因为如果我使用我的上下文/会话的假实现,我没有进行真正的测试?因为上下文/会话本身就是存储库(我的意思是它们实现了添加,删除,编辑,GetById,GetAll等的真实逻辑)?
使用EF或NH的存储库模式就像一个包装器?(不仅是一个包装器,我知道这是域的导入概念.)
.net nhibernate unit-testing domain-driven-design entity-framework
测试时,以下行以空引用失败:
var awards = _session.QueryOver<Body>().Where(x => x.BusinessId == (int)business).List();
Run Code Online (Sandbox Code Playgroud)
我的测试是这样的:
var mockQueryOver = new Mock<IQueryOver<Body, Body>>();
mockQueryOver.Setup(q => q.List()).Returns(new List<Body> {_awardingBody});
_mockSession.Setup(c => c.QueryOver<Body>()).Returns((mockQueryOver.Object));
_mockCommandRunner = new Mock<ICommandRunner>();
_generator = new CertificateGeneratorForOpenSSLCommandLine(_mockSession.Object, _mockCommandRunner.Object, _mockDirectory.Object, _mockFile.Object, _mockConfig.Object);
Run Code Online (Sandbox Code Playgroud)
说实话,我在黑暗中徘徊 - 我对nHibernate和Moq相对较新,所以我不太确定要google什么才能获得正确的信息.
我不得不承认我一直在携带"存储库不应该返回IQueryable"横幅,因为它更难测试.我已经被回答像其他问题的影响这个和这个.
今天早上我一直在阅读ScuttGu关于ASP.NET vNext的博客,在那里他使用SelectMethod详细介绍了Model Binding,它似乎依赖于IQueryable进行分页和排序.
您认为这会迫使我们重新考虑IQueryable在存储库中扮演的角色吗?
nhibernate ×2
unit-testing ×2
.net ×1
asp.net ×1
c# ×1
iqueryable ×1
moq ×1
queryover ×1
repository ×1