当你想为紧密耦合的代码编写单元测试时,它可能会有点复杂。为了使uni测试更容易,您应该更好地依赖抽象,而不是真正的实现。例如。 Order
类应该不依赖于服务层的实际实现,而应该引入一个更容易模拟的接口,而不是可能设置为final
的类。
由于您的RequestHandler负责创建订单实例,因此您必须提供一种在单元测试中模拟订单类的方法。简单的方法是创建一个简单地创建一个新订单实例的受保护方法。
protected Order createOrder(String someParam) {
return new Order(someParam);
}
在您的单元测试中,您现在可以扩展该类并覆盖工厂方法。 使用Mockito这看起来像:
protected Order createOrder(String someParam) {
Order order = Mockito.mock(Order.class); // create mock object
// configure mock to return someParam when
// String Order#getSomeParam() gets invoked
Mockito.doReturn(someParam).when(order).getSomeParam();
return order;
}
“Order类本身所具有的业务层上非常紧张的依赖。” - 为什么? – blank
@Bedwyr这不是我的设计。这就是这样,我没有任何控制权。 –