タイトルによれば、私は統合テストを作成しており、これらのテストの一部としてIMapperオブジェクトをテストして初期化したいと考えています。統合テストでのIMapperの使用
私はテストフレームワークとしてXUnitを使用しています。依存性注入を処理するにはNinjectを使用しています。
私は静的なAutoMapperメソッドを使用することに慣れていて、私のリポジトリコンストラクタの1つのパラメータであるIMapperインターフェイスを使用するようにシフトしています。
NinjectModule基本クラスを継承するDependencyRegistrarクラスがあります。
マイLoadメソッドは以下の通りです:
public override void Load()
{
var automapperConfig = new MapperConfiguration(cfg => { cfg.AddProfile<AutoMapperProfile>(); });
automapperConfig.AssertConfigurationIsValid();
var mapper = automapperConfig.CreateMapper();
Bind<IMapper>().ToConstant(mapper).InSingletonScope();
Bind<IUserManager>().To<UserManager>().InTransientScope();
Bind<IUserRepository>().To<UserRepository>().InTransientScope();
}
このモジュールは、APIプロジェクトでNinjectWebCommonクラスによってロードされているが、明らかに統合テスト中にロードされません。
ConfigurationSettingsEntity configurationSettings = new ConfigurationSettingsEntity(ConfigurationManager.AppSettings);
var modules = new INinjectModule[] { new DependencyResolution.DependencyRegistrar(configurationSettings) };
var kernel = new StandardKernel(modules);
だから、私の質問は、私は統合テストを構築するとき、私は私のリポジトリのコンストラクタにそのマッパーを渡すことができるように、実際のマッパーの実装をロードするための最良の方法は何ですか?
UserRepository tester = new UserRepository(mapper);
これは、マッパーを読み込むのに最適です。ありがとう! –