2015-02-09 102 views
2

我有一个门面类,它实现了以下方法:getTotalNumOfItems(Query query)。门面站在两个其他服务类之前,它们实现相同的方法。根据query参数的类型,外观决定是委托给其中一个服务还是另一个。单元测试门面类

我的两难困境是如何为门面编写单元测试,而测试不必知道项目的数量是如何派生的。否则,它看起来像一个集成测试,而不是一个单元测试了。

我已经提供了两种服务的就地模拟版本,使用Mockito。然而,当我为此编写单元测试时,我可以测试的唯一事情是“验证facade是否返回数字,等于mock返回的内容(取决于查询类型)”。似乎没有办法以比这更不可知的方式测试立面。

我在这里做错了什么?我应该感到担心吗?我想,外观的性质是这样的,它的效率只能通过了解它委托的类来验证。当然,我确信在这两种服务中都使用相同的方法编写单元测试。

+0

您需要测试单个服务对象而不是门面本身。 – SMA 2015-02-09 10:32:26

+0

所以我做到了。然而,我想确保门面总是决定正确的服务,委托给 – preslavrachev 2015-02-09 10:33:29

+0

不,你不应该你不做UT。 UT只是类和具体的方法。 – SMA 2015-02-09 10:35:55

回答

4

正如您所说的,立面的责任是决定要委派给哪个服务。这是你需要测试的。该服务的返回值对测试没有兴趣。因此,对于你的嘲笑,只要确保在一个测试用例中调用了其中一个,另一个则从未调用过。而第二个测试案例应该是相反的。