模拟一个大的部分类

时间:2018-05-14 08:03:14

标签: c# unit-testing mocking partial-classes

我想对具有3个数据库调用的Controller方法进行单元测试。但每个数据库调用都是通过询问一个大型的Partial Class文件来完成的,该文件的名称是DAL。 Dal类有70种方法!我是否必须使用DAL类可以使用的70种方法创建接口;所以我可以用模拟切换它?或者是否有更好的解决方案可以模拟这个DAL类?

2 个答案:

答案 0 :(得分:1)

有一个免费的C#模拟库,名为Moq(mock-u或mock),这可以通过Nuget获得。它允许使用lambda表达式和各种验证调用进行非常强大的模拟控制。您不需要指定任何超出需要的方法定义,并且每次调用都可以完全更改每个方法的行为。

https://www.nuget.org/packages/moq/

https://github.com/Moq/moq4/wiki/Quickstart

我个人可以保证Moq很棒。

答案 1 :(得分:0)

拥有70个方法的一个庞大的类必然会产生这样的问题。无需重构DAL类,例如,在较小的存储库中,您可以使用每个控制器所需的少数方法创建较小的接口,并使DAL类实现许多这些较小的接口。然后,您可以仅模拟所需的接口,并让您的控制器也依赖于此接口。

它可能看起来像:

interface A {
    void DoAThing();
}
interface B {
    void DoBThing();
}
class Mock : A {
    public void DoAThing() {
        //fake it till you make it       
    }
}
class DAL : A, B {
    //Way too many methods here
}