Как переопределить зависимости по умолчанию с помощью Mockbox и Wirebox

У меня есть служба регистрации, которая имеет 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?

1 ответ

Я нашел решение, хотя оно выглядит несколько странным, но оно работает. По сути, я говорю Wirebox, чтобы удалить существующие карты CustomerContactLogger а затем создать CustomerContactLoggerMock и введите все проверенные свойства. После этого я создаю новое отображение CustomerContactLogger и установите значение, равное высмеиваемому объекту.

injector.getBinder().unMap('customercontactLogger');
customerContactLoggerMock = mockBox.createMock('models.customer.loggers.CustomerContactLogger');
customerContactLoggerMock.$property(propertyName='scopeStorage', mock=scopeStorageMock).$property(propertyName='loggerServiceDAO', mock=loggerServiceDAOMock);injector.getBinder().map('CustomerContactLogger').toValue(customerContactLoggerMock);
injector.getBinder().map('CustomerContactLogger').toValue(customerContactLoggerMock);
Другие вопросы по тегам