每日消息!领域驱动设计之单元测试最佳实践(二)
【资料图】
介绍完了DDD案例,我们终于可以进入主题了,本方案的测试代码基于Xunit编写,断言组件采用了FluentAssertions,类似的组件还有Shouldly。另外本案例使用了Code Contracts for .NET,如果不安装此插件,可能有个别测试不能正确Pass。
为了实现目标中的第二点:"尽量不Mock,包括数据库读取部分”,我尝试过3种方案:
1、测试代码连接真实数据库,只需要将测试数据库配置到测试项目中的web.config中,即可达到这一目标。但是该方案毕竟存在很多缺点,如:需要将测试库和正式库的更改保持同步,单元测试不利于集成在CI中,不利于团队协作等。
2、使用SQL Lite,但是由于SQL lite本身不支持一些Linq表达式如:Skip,另外还有一些功能也无法跟Sql server保持一致,最终放弃该方案。
3、使用测试组件Effort,可以很好的配合Entity framework使用,由于Effort内部使用了关系型内存数据库nmemory,所以非常适合运行单元测试。
当然我还是非常期待微软能够编写基于EF的单元测试组件。
我在《我眼中的领域驱动设计》一文中提到:不要使用数据库独有的技术,如存储过程和触发器等。一方面这些逻辑都应该是Domain逻辑,另一方面一旦使用了这些技术也就意味着我们无法为这些逻辑编写测试。
一、使用Effort
为了能够在Castle中使用基于Effort的DbContext,需要在Castle中注册Effort:
1关键词:
- 新品上市!劲爆来袭!叼嘴巴叼嘴王胶姆糖重磅招商中!
- 边城战“疫”:夜晚七点的暂停键
- 风雪高原战“疫”长卷 寒潮下的西宁疫情防控观察
- 海口市1例治愈后的境外输入病例复阳 已转至定点医院隔离
- 四川新增本土确诊病例4例
- 黑龙江省新增新冠肺炎本土确诊病例6例
- 河南新增本土确诊病例18例 其中郑州市16例周口市2例
- 河北新增确诊病例8例 新增无症状感染者1例
-
寒潮持续发威!南方气温纷纷触底 强降雪中心转移至东北
中国天气网讯 今天(11月8日),寒潮继续南下,持续发威,南方大部最高气温将纷纷触底。强降雪中心将转移至东北地区,预计今天,黑龙江
-
雪后寒!今日北京晴天回归北风劲吹 最高气温5℃上下
中国天气网讯 今天(11月8日)北京晴天回归,但在风寒效应下,“冷”仍然是天气的主题。气温方面,今天北京最高气温在5℃左右,最低气温
-
黑龙江新增本土确诊病例6例 均在黑河市爱辉区
中新网11月8日电 据黑龙江省卫健委网站消息,2021年11月7日0-24时,黑龙江省新增新冠肺炎本土确诊病例6例(黑河市爱辉区6例),均为集中
X 关闭
X 关闭