Итак, я работал над некоторыми проблемами, и я очень близок, но я столкнулся с проблемой.
Вот как я называю свою фабрику:
ClassImporter classImporter = new ClassImporter(importOptions);
Существует несколько типов ClassImporter
объектов, вот базовый класс ClassImporter
с одним из типов.
public class ClassImporter
{
public ImportOptions Options;
public ClassImporter Importer;
public ClassImporter()
{
}
public ClassImporter(ImportOptions options)
{
this.Options = options;
this.Importer = ClassImporterFactory.GetImporter(options);
}
public virtual List<Class> Import()
{
return Importer.Import();
}
}
public class ExcelImporter : ClassImporter, IClassImporter
{
public ExcelImporter() : base()
{
}
public override List<Class> Import()
{
if (base.Options.FileLocation == string.Empty)
{
throw new BlankFilenameException("A blank Excel file location was supplied.");
}
return new List<Class>();
}
}
И вот этот Factory
класс, который вы видите там:
public class ClassImporterFactory
{
public static ClassImporter GetImporter(ImportOptions options)
{
switch (options.FileType)
{
case FileType.CSV:
return new CSVImporter(options);
case FileType.Excel:
return new ExcelImporter();
case FileType.MySQL:
return new MySQLImporter(options);
case FileType.Oracle:
return new OracleImporter(options);
case FileType.ScreenScraper:
return new ScreenScraperImporter(options);
case FileType.SQL:
return new SQLImporter(options);
case FileType.XML:
return new XMLImporter(options);
case FileType.NotSet:
default:
throw new BlankImportTypeException("Import type was not specified in the Import Options.");
}
}
}
Теперь я пытаюсь Assert
на том Exception
, который вы видите в классе ExcelImporter
, с такой строкой:
classImporter.Import();
Мой тест имеет ExpectedException
, но когда я отлаживаю его, похоже, что Importer, размещенный в классе ClassImporter
, в основном рассматривает свои собственные опции вместо базовых опций основного класса. который его создал, и, следовательно, не видит переданные параметры, только их нулевую копию.
Как я могу повторить это?
РЕДАКТИРОВАТЬ: Полный тест:
[TestMethod]
[ExpectedException(typeof(BlankFilenameException), "A blank Excel file location was supplied.")]
public void LoadExcelFile_EmptyName_ReturnsBlankFilenameException()
{
ImportOptions importOptions = new ImportOptions(FileType.Excel, string.Empty);
ClassImporter classImporter = new ClassImporter(importOptions);
classImporter.Import();
}