У меня есть приложение, в которое я добавляю исключения в конструктор одного класса. У меня есть модульные и интеграционные тесты, написанные на nUnit, и я проверяю, выбрасывается ли это исключение, когда я хочу, например:
Assert.That(() => _fileOperationsModel.OpenFile("abc"), Throws.Exception.TypeOf<MissingFieldException>());
И оно работало отлично, пока я не начал использовать Autofa c. Мне нужно создать этот класс, который выдает исключение, используя autofa c, поэтому, когда вызывается конструктор, и выбрасывается мое исключение, MissingFieldException
больше нет, но Autofac.Core.DependencyResolutionException
.
И в этом исключении детали, есть 4 внутренних исключения. 3 из них также DependencyResolutionException
, и последний из них - мой MissingFieldException
.
Я пытался проверить это так:
var ex = Assert.Throws<Autofac.Core.DependencyResolutionException>(() => _fileOperationsModel.OpenFile("abc"));
Assert.That(ex.InnerException, Is.TypeOf<MissingFieldException>());
, но это не работает, потому что InnerException
только один, и это также DependencyResolutionException
.
Есть ли у вас какие-либо идеи, как я могу обработать эти исключения и как я могу проверить это? Я новичок в Autofa c, и я пытался найти что-то об этом, но безрезультатно.
РЕДАКТИРОВАТЬ: Я знаю, что могу сделать это так
var ex = Assert.Throws<Autofac.Core.DependencyResolutionException>(() => _fileOperationsModel.OpenFile("abc"));
Assert.That(ex.InnerException, Is.TypeOf<DependencyResolutionException>());
Assert.That(ex.InnerException.InnerException, Is.TypeOf<DependencyResolutionException>());
Assert.That(ex.InnerException.InnerException.InnerException, Is.TypeOf<DependencyResolutionException>());
Assert.That(ex.InnerException.InnerException.InnerException.InnerException, Is.TypeOf<MissingFieldException>());
, но, возможно, там что-то лучше и не так уж плохо?