如何使用Mockbox和Wirebox覆盖默认依赖项

时间:2017-11-15 23:35:48

标签: unit-testing coldfusion coldbox wirebox testbox

我有一个具有ScopeStorageLoggerServiceDAO依赖关系的记录器服务,在我的单元测试中,我需要覆盖它们以使用我创建的模拟对象。我正在使用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创建的两个模拟对象时?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,虽然看起来有点hacky但它​​确实有效。基本上我所做的是告诉Wirebox取消映射现有的@QueryParam,然后创建一个CustomerContactLogger并注入所有Mocked属性。之后,我创建了CustomerContactLoggerMock的新映射,并将值设置为等于模拟对象。

CustomerContactLogger
相关问题