我有一个具有ScopeStorage
和LoggerServiceDAO
依赖关系的记录器服务,在我的单元测试中,我需要覆盖它们以使用我创建的模拟对象。我正在使用Wirebox AOP来触发日志记录事件,所以我不能只创建一个模拟对象并将其传递给CustomerContact
对象的构造函数
这是我正在创建的模拟:
scopeStorageMock = mockBox.createMock('system.ScopeStorage').$('get', 111);
loggerServiceDAOMock = mockBox.createMock('system.services.daos.loggerServiceDAO').$('insertLog');
在我的Wirebox活页夹中,我有以下映射:
map('CustomerContact').to('models.Customer.CustomerContactBean');
map('LoggerServiceDAO').to('system.Services.DAOs.LoggerServiceDAO');
map('ScopeStorage').to('system.ScopeStorage');
map('CustomerContactLogger').to('models.customer.loggers.CustomerContactLogger');
mapAspect("CustomerAspect").to('models.CustomerAspect');
bindAspect(classes=match().mappings("CustomerContact"), methods=match().methods(['create','delete', 'update']), aspects="CustomerContactLogger");
我的单元测试中是否有一种方法告诉Wirebox当它获得CustomerAspect
对象的实例以使用我使用Mockbox创建的两个模拟对象时?
答案 0 :(得分:0)
我找到了解决方案,虽然看起来有点hacky但它确实有效。基本上我所做的是告诉Wirebox取消映射现有的@QueryParam
,然后创建一个CustomerContactLogger
并注入所有Mocked属性。之后,我创建了CustomerContactLoggerMock
的新映射,并将值设置为等于模拟对象。
CustomerContactLogger