2017-10-26 13 views
0

.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です)は単なる標準ドメインクラスです。

Context from immediate window

しかし、VS2017は、お問い合わせは、タイプTEntity

のパラメータに割り当てていないエラーメッセージ

引数の型に呼び出す追加(CT)におけるCTの下に波線私に赤を与えています

これはいつも私がEFで働いてきた方法です。コアに新しいものがありますか?

+0

私のプロジェクトでそれを使用していて、うまくいけば、どこかに問題があると思います。 –

+0

まず、これはユニットテストではなく、統合テストです。第二に、*フレームワーク*をテストしないでください。 EFコアが非常によくテストされているので、 'Add'が実際にエンティティを追加することは安全に仮定できます。すでに機能が正しく動作することを確認するためのテストが行​​われています。あなた自身を作ることは役に立たない。 –

+0

@Chris Pratt ...テストでは、EFコアを使い始めたばかりなので、実際にコンテキストを作成して対話できるかどうかを確認するだけでした。私は、ADDメソッドが機能しているかどうかを調べるためにテストしていませんでした。 – dinotom

答えて

1

よくVisual StudioもResharperもこのエラーの解決方法を私に警告していました。しかし、ユニットテストのUIのエラートレースには、System.Data.SqlClientファイルが見つかりませんでした。

Microsoft.EntityFrameworkCore.SqlServerパッケージを追加しました。これで問題は解決しました。

関連する問題