public void ExceptionDisposesExistingMods() { var dataFolder = "C:/DataFolder"; var modPaths = new ModKey[] { TestConstants.MasterModKey, TestConstants.MasterModKey2, } .Select(x => ModPath.FromPath(Path.Combine(dataFolder, x.FileName))) .ToArray(); var fs = Substitute.For <IFileSystem>(); fs.File.Exists(Arg.Any <string>()).Returns(true); var importer = Substitute.For <IModImporter <IModDisposeGetter> >(); var mod = Substitute.For <IModDisposeGetter>(); importer.Import(modPaths.First()).Returns(mod); importer.Import(modPaths.Last()).Throws(new ArgumentException()); Assert.Throws <AggregateException>(() => { new LoadOrderImporter <IModDisposeGetter>( fs, new DataDirectoryInjection(dataFolder), new LoadOrderListingsInjection(modPaths.Select(x => x.ModKey).ToArray()), importer) .Import(); }); mod.Received().Dispose(); }