.AspNetCore 2.0とEFCore 2.0を使用して、自分用に新しいWebアプリケーションテンプレートを作成しています。エンティティを追加していないEntityFrameworkCore
私のテストプロジェクトでは、コンテキストの作成とDbSetsへの追加の両方でいくつかのテストを行っています。
ここにコンテキスト作成の方法があります。
public static ApplicationDbContext CreateDbContext(string[] args)
{
var basepath = GetBasePath("Application.UI");
var configuration = new ConfigurationBuilder()
.SetBasePath(basepath)
.AddJsonFile("appsettings.json")
.Build();
//Set up configuration sources.
var connectionString = configuration.GetConnectionString("DefaultConnection");
var builder = new DbContextOptionsBuilder<ApplicationDbContext>();
builder.UseSqlServer(connectionString);
return new ApplicationDbContext(builder.Options);
}
ここでは、エラーメッセージが表示されるテスト方法を示します。
[TestMethod]
public void AddContact_WithDates_ShouldGetAdded()
{
//Arrange
var ct = new ContactUs
{
ContactWho = ContactWho.Support,
Message = "Please call me about website problems",
Email = "[email protected]",
MessageSentTimestamp = DateTime.UtcNow,
FirstName = "Jim",
LastName = "Simons",
ReportingError = false,
MobilePhone = "5555556666"
};
var appArgs = new[] {"TestApp"};
var context = ApplicationDbContextFactory.CreateDbContext(appArgs);
//Act
context.ContactUss.Add(ct);
//Assert
Assert.IsNotNull(context);
}
コンテキストが正しく作成されています。 ContactUs(ContactUssはContactUsのDbSetです)は単なる標準ドメインクラスです。
しかし、VS2017は、お問い合わせは、タイプTEntity
のパラメータに割り当てていないエラーメッセージ引数の型に呼び出す追加(CT)におけるCTの下に波線私に赤を与えています
これはいつも私がEFで働いてきた方法です。コアに新しいものがありますか?
私のプロジェクトでそれを使用していて、うまくいけば、どこかに問題があると思います。 –
まず、これはユニットテストではなく、統合テストです。第二に、*フレームワーク*をテストしないでください。 EFコアが非常によくテストされているので、 'Add'が実際にエンティティを追加することは安全に仮定できます。すでに機能が正しく動作することを確認するためのテストが行われています。あなた自身を作ることは役に立たない。 –
@Chris Pratt ...テストでは、EFコアを使い始めたばかりなので、実際にコンテキストを作成して対話できるかどうかを確認するだけでした。私は、ADDメソッドが機能しているかどうかを調べるためにテストしていませんでした。 – dinotom