Automapper ProjectToを使用するメソッドをユニットテストしようとしていますが、MVCコアにマッピングを登録する方法がわかりません。私は組み込みユニットテストを使用しています。MVCコア2.0のユニットテストとオートマッハ
私のユニットテストは次のとおりです。私は、テストを実行すると、私は次のエラーを取得しています
[TestClass]
public class BusinessGenderServiceTest
{
[ClassInitialize]
public static void Init(TestContext context)
{
}
[TestMethod]
public void GetTest()
{
var options = new DbContextOptionsBuilder<GotNextDbContext>()
.UseInMemoryDatabase(databaseName: "GetTest")
.Options;
using (var context = new GotNextDbContext(options))
{
context.GenderLanguage.Add(new GenderLanguage { Id = 1, Name = "Male", Language = 1 });
context.GenderLanguage.Add(new GenderLanguage { Id = 2, Name = "Female", Language = 1 });
context.GenderLanguage.Add(new GenderLanguage { Id = 3, Name = "Hombre", Language = 2 });
context.GenderLanguage.Add(new GenderLanguage { Id = 4, Name = "Hombre", Language = 2 });
context.SaveChanges();
}
using (var context = new GotNextDbContext(options))
{
var service = new GenderService(context);
var result = service.Get(1);
Assert.AreEqual(2, result.Count());
}
}
}
:
メッセージ:例外をスローしたGotNext.Test.BusinessGenderServiceTest.GetTest試験方法:
のSystem.InvalidOperationException:マッパーが初期化されていませんが。適切な設定でInitializeを呼び出します。コンテナなどを使用してマッパーインスタンスを使用する場合は、静的なMapper.Mapメソッドを呼び出さないようにしてください。また、ProjectToメソッドまたはUseAsDataSource拡張メソッドを使用している場合は、適切なIConfigurationProviderインスタンス。
1.あなただけのクラスをテストしていないので、それは、統合テストだだけでなく、外部依存関係(AutoMapper、DbContext)2.ちょうどautomapperプロファイルを使用して、どこあなたはあなたの登録を入れて、あなたの統合テストに登録します – Tseng
@ Tsengに関して#2)...あなたはどのように「あなたの登録を入れて、あなたの統合テストに登録しますか?プロダクションコードで使用されているProfilesクラスがありますが、統合テストでどのように使用するかわかりません。助けて? :) –
nm ...私はこれを発見しました:https://github.com/AutoMapper/AutoMapper/wiki/Configuration –