2016-06-27 4 views
0

Я использую AutoFixture с моими испытаниями BDD.Последовательность не содержит элементов, которые выбрасываются только из AutoFixture

Я пытаюсь написать светильник для класса User, который, в свою очередь, использует класс CentralConfiguration. CentralConfiguration конструктор выглядит следующим образом:

public CentralConfiguration(
    IConfigurationRepository configurationRepository, 
    ILogger logger) 
{ 
    _logger = logger; 
    _configuration = configurationRepository.Single(); 
    LogPropertyValues(); 
} 

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

configuration.Single().Returns(myCustomObject) 

, но ничего не изменилось (на самом деле эта линия начала бросать же исключение).

Что я делаю неправильно, и как я могу обойти эту проблему?

+0

Вы используете авто-насмешливую библиотеку клея? (например, AutoFixture.AutoMoq) –

+1

Если 'CentralConfiguration' зависит только от одного' Whatchamacallit', то почему бы вам не вместо этого вставить _that_? [Инъекционные конструкторы должны быть простыми] (http://blog.ploeh.dk/2011/03/03/InjectionConstructorsshouldbesimple). –

ответ

0

Изменить CentralConfiguration на:

public CentralConfiguration(
    IConfiguration configuration, 
    ILogger logger) 
{ 
    _logger = logger; 
    _configuration = configuration; 
    LogPropertyValues(); 
} 

Также рассмотреть удаление вызов LogPropertyValues из конструктора. Injection Constructors should be simple.

Смежные вопросы