我应该从我的服务方法中测试什么?

时间:2014-07-16 13:37:24

标签: unit-testing

我有一个奇怪的困境。我必须使用单独的dll进行数据库调用操作。这些类编写得不好,不允许继承或非常好的重用性。他们使用大量的ref参数而不是返回更有用的对象。话虽这么说,我试图在我的代码方面至少清理它们并隐藏所有不那么有用的信息。我坚持要在我的服务方法中测试一下。

我正在向包含此方法的apiController注入一个服务:

  public IEnumerable<ReportGroupName> Get(int key)
    {
        var webQueryGroupNames = new List<WebQueryGroupName>();
        //this method returns an object I have no use for
        //(the actual object returned not the ref object)
        _queryPermissions.GetWebQueryGroupNames(ref webQueryGroupNames, key);
        return Mapper.Map<List<WebQueryGroupName>, List<ReportGroupName>>(webQueryGroupNames);
    }

我无法回答的问题是:

我应该添加测试来检查从_queryPermissions.GetWebQueryGroupNames()方法返回的值吗?

我应该只检查从My Get方法返回的数据吗?

我应该只是验证方法是否被调用,因为我的服务实际上并没有产生数据? (我在自动化调用周围进行了映射测试,以验证它们是否正确映射)

1 个答案:

答案 0 :(得分:1)

第一层单元测试是必须的。 测试Get Method会使用各种键返回正确的数据。

不言而喻。

但是,如果你不能控制这个外部组件,你应该运行一些自己的测试,看看那个&#34; service&#34;的内部工作原理。没有被篡改,总是记住liskov替换原则。

第二层单元测试,不是&#34;必须&#34;总是如此,但如果您认为可以对您无法控制的dll进行更改,或者经常进行更改,则建议将其合并。

祝你好运!