2017-03-21 62 views
1

我來自Java背景,在Java中我使用嵌入式內存數據庫實例編寫單元測試(儘管它們更接近集成測試)。我發現比那些包含嘲笑的測試更有用的測試,這可能會隱藏錯誤,嘲諷過程本身就是錯誤的。我還使用了諸如嵌入式中間件,嵌入式NoSQL數據庫等等,這些工作非常好。.Net Core中的嵌入式數據庫測試

但是,在.Net生態系統中,我正在努力尋找一個平行線。該文檔只顯示the approach I do not like(和一個相當基本的)。有沒有像Mongo2Go(我正在尋找的罕見例子),但對於關係數據庫?我錯過了不同的方法嗎?

回答

2

以下是測試實體框架的兩個選項。

InMemory database專爲不需要嚴格關係數據庫行爲的測試而設計。

[TestMethod] 
public void Foo_DoesBar_WhenBaz() 
{ 
    var options = new DbContextOptionsBuilder<BloggingContext>() 
     .UseInMemoryDatabase(databaseName: "foo_bar_baz") 
     .Options; 

    using (var context = new BloggingContext(options)) 
    { 
     ... 
    } 
} 

SQLite in-memory mode當測試需要更多的關係行爲時是合適的。

[TestMethod] 
public void Foo_DoesBar_WhenBaz() 
{ 
    var connection = new SqliteConnection("DataSource=:memory:"); 
    connection.Open(); 

    try 
    { 
     var options = new DbContextOptionsBuilder<BloggingContext>() 
      .UseSqlite(connection) 
      .Options; 

     using (var context = new BloggingContext(options)) 
     { 
      ...   
     } 
    } 
    finally 
    { 
     connection.Close(); 
    } 
} 
+0

謝謝,看起來它現在會做:-) –