Как переопределить зависимости по умолчанию с помощью 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);