将Moq C#代码转换为等效的c#Microsoft伪造品以进行单元测试

凯尔

我正在尝试使用我最近正在研究的项目进行单元测试。

它涉及一个SQL Server 2008 R2数据库和一个使用C#、. NET 4.5和Visual Studio 2013 Premium的WCF服务。我们使用实体框架(EF)6.0.1。

我正在尝试使用Microsoft Fakes单独测试WCF,以便不需要数据库。我们的目标是使用“内存数据库”来做到这一点。我的困难是为EF的dbcontext“存根”,所以我知道它处于已知状态,可以查询,更改和监视。

我已经读过,这可能是一个坏主意,因为linq-to-objects与linq-to-sql之间的Linq提供程序不同。该功能可以在编译时通过,但在运行时失败。为了解决这个问题,一旦通过TFS部署到我们的DEV服务器,我们还进行了集成测试(将WCF连接到真实数据库)。

我还读过有关dbcontext可以使用MS FAKES填充的信息,但感觉很不对。

另外,添加存储库模式(依赖注入(DI))不会导致我们的代码覆盖率增加,这是我们期望的结果之一。

然后,我发现了这篇文章http://msdn.microsoft.com/en-gb/data/dn314429.aspx和这篇文章http://frankdecaire.blogspot.co.uk/2013/11/entity-framework-6-mocking -and-unit.html?showComment = 1392224065716

这实现了我想要做的,但是使用了Moq。可以将此代码从Moq转换为MS FAKES吗?FAKES是否能够完成Moq所做的一切,还是我也应该学习Moq以增加我对FAKES的有限了解?

var mockSet = new Mock<DbSet<account>>();
mockSet.As<IQueryable<account>>().Setup(m => m.Provider)
       .Returns(data.Provider);
mockSet.As<IQueryable<account>>().Setup(m => m.Expression)
       .Returns(data.Expression);
mockSet.As<IQueryable<account>>().Setup(m => m.ElementType)
       .Returns(data.ElementType);
mockSet.As<IQueryable<account>>().Setup(m => m.GetEnumerator())
       .Returns(data.GetEnumerator());

有任何问题请随时询问我(们

干杯

凯尔

阿莫尔

IMO,您需要通过采用更分层的方法来开始将代码解耦。我不太确定通过隔离测试WCF需要实现什么。我建议进行三层测试,如下所示:

  1. 数据访问-使用EF及其数据库上下文并实现数据访问接口。您应该对此进行单元测试,而不模拟EF的数据库上下文。此层的测试将取决于“状态”。我的意思是,您的测试将使用真实数据和数据库进行CRUD操作。您只需要确保在测试运行后不要将更改持久保存到数据库。可以使用Spring.Net的测试库来实现此目的,或者只是在事务范围内运行测试,然后在每次测试运行后回滚事务(在清理过程中)。

  2. 业务逻辑-包含业务逻辑并与数据访问接口一起使用。使用任何DI框架(例如spring.net或ms unity)注入数据访问层。您应该通过避免实际的数据库调用来对此进行单元测试。这是NMock,Rhinomock或MOQ出现的地方。使用模拟设置边界条件和异常条件,并确保您的业务逻辑解决了所有问题。

  3. WCF服务层-与您一起进行操作和数据合同。理想情况下,仅将呼叫转发给业务逻辑,并将响应转换为数据合同。我更喜欢在此级别进行两种类型的测试:a)用于测试翻译和适当的呼叫转移的单元测试。b)很少使用代理进行基本的集成测试,而一些测试数据无需进行任何模拟就可以遍历整个堆栈。

我对MS假货唯一的问题是,它随VS2012最终版本一起提供,因此与MOQ之类的东西相比,其用户群要少得多。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将Moq C#代码转换为等效的c#Microsoft假冒产品以进行单元测试

来自分类Dev

将C#单元测试转换为方法

来自分类Dev

C# Moq - 无法将 List<DerivedClass> 转换为 List<BaseClass>

来自分类Dev

moq进行单元测试的通用方法

来自分类Dev

使用Moq进行单元测试

来自分类Dev

使用 Moq 框架进行单元测试

来自分类Dev

使用回调和RegEx方法将JavaScript代码转换为C#中的等效代码

来自分类Dev

c#单元测试到达真实服务时,moq失败

来自分类Dev

需要帮助将代码片段从Java转换为C#等效

来自分类Dev

将VB代码转换为C#

来自分类Dev

将VB代码转换为C#

来自分类Dev

将VB转换为C#代码

来自分类Dev

将C#代码转换为python

来自分类Dev

将 C# 代码转换为 VBscript

来自分类Dev

模仿ViewModel进行Moq进行单元测试?

来自分类Dev

如何对将 Action 转换为 Func 的扩展方法进行单元测试?

来自分类Dev

Microsoft伪造品和TFS 2012 Visual Studio测试运行器-单元测试偶尔会失败

来自分类Dev

使用 Moq 进行单元测试时避免代码中的 thread.sleep

来自分类Dev

是否可以将Moq对象传递给C#类构造函数?

来自分类Dev

如何将表达式签名转换为适用于 `Moq` 的 `It.IsAny`

来自分类Dev

使用moq模拟HttpContext进行单元测试

来自分类Dev

使用Moq进行单元测试,但对象返回Null

来自分类Dev

使用Moq对dbContext进行单元测试添加操作

来自分类Dev

Moq Framework对返回任务的方法进行单元测试

来自分类Dev

Moq和EF6进行单元测试

来自分类Dev

使用Moq和Autofac进行单元测试

来自分类Dev

使用 Moq 和接口进行单元测试

来自分类Dev

如何使用MSTEST对ASP.NET CORE控制器进行单元测试并添加伪造品

来自分类Dev

向Microsoft Team添加频道的问题(C#代码,将频道类型转换为界面)

Related 相关文章

  1. 1

    将Moq C#代码转换为等效的c#Microsoft假冒产品以进行单元测试

  2. 2

    将C#单元测试转换为方法

  3. 3

    C# Moq - 无法将 List<DerivedClass> 转换为 List<BaseClass>

  4. 4

    moq进行单元测试的通用方法

  5. 5

    使用Moq进行单元测试

  6. 6

    使用 Moq 框架进行单元测试

  7. 7

    使用回调和RegEx方法将JavaScript代码转换为C#中的等效代码

  8. 8

    c#单元测试到达真实服务时,moq失败

  9. 9

    需要帮助将代码片段从Java转换为C#等效

  10. 10

    将VB代码转换为C#

  11. 11

    将VB代码转换为C#

  12. 12

    将VB转换为C#代码

  13. 13

    将C#代码转换为python

  14. 14

    将 C# 代码转换为 VBscript

  15. 15

    模仿ViewModel进行Moq进行单元测试?

  16. 16

    如何对将 Action 转换为 Func 的扩展方法进行单元测试?

  17. 17

    Microsoft伪造品和TFS 2012 Visual Studio测试运行器-单元测试偶尔会失败

  18. 18

    使用 Moq 进行单元测试时避免代码中的 thread.sleep

  19. 19

    是否可以将Moq对象传递给C#类构造函数?

  20. 20

    如何将表达式签名转换为适用于 `Moq` 的 `It.IsAny`

  21. 21

    使用moq模拟HttpContext进行单元测试

  22. 22

    使用Moq进行单元测试,但对象返回Null

  23. 23

    使用Moq对dbContext进行单元测试添加操作

  24. 24

    Moq Framework对返回任务的方法进行单元测试

  25. 25

    Moq和EF6进行单元测试

  26. 26

    使用Moq和Autofac进行单元测试

  27. 27

    使用 Moq 和接口进行单元测试

  28. 28

    如何使用MSTEST对ASP.NET CORE控制器进行单元测试并添加伪造品

  29. 29

    向Microsoft Team添加频道的问题(C#代码,将频道类型转换为界面)

热门标签

归档