ASP.NET Core 集成测试中结合 WebApplicationFactory 使用 SQLite 内存数据库
SQLite 內(nèi)存數(shù)據(jù)庫(kù)(in-memory database)的連接字符串是??Data Source=:memory:?,它的特點(diǎn)是數(shù)據(jù)庫(kù)連接一關(guān)閉,數(shù)據(jù)庫(kù)就會(huì)被刪除。而使用??services.AddDbContext?通過(guò)連接字符串配置 EF Core 時(shí),EF Core 會(huì)在每次查詢或 SaveChanges 后立即關(guān)閉數(shù)據(jù)庫(kù)連接。在這樣的情況下,集成測(cè)試中就無(wú)法在向?SQLite 內(nèi)存數(shù)據(jù)庫(kù)寫入數(shù)據(jù)庫(kù)后進(jìn)行查詢測(cè)試。
為了解決上述問(wèn)題,我們就不能讓 EF Core 自己自動(dòng)維護(hù)數(shù)據(jù)庫(kù)連接,而只能改為手動(dòng)模式,手工創(chuàng)建并打開(kāi)?SqliteConnection 給 EF Core 使用,在用完之后的適當(dāng)時(shí)候關(guān)閉連接。
除此之外,由于在每次打開(kāi)數(shù)據(jù)庫(kù)連接都會(huì)創(chuàng)建新的數(shù)據(jù)庫(kù),所以還要解決在什么寫入數(shù)據(jù)之前完成數(shù)據(jù)庫(kù)的初始化。
結(jié)合?WebApplicationFactory ,我們用下面繼承自 WebApplicationFactory 的實(shí)現(xiàn)代碼解決了問(wèn)題。
集成測(cè)試中的示例代碼如下
原文地址:?https://www.cnblogs.com/dudu/p/9765937.html
.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的ASP.NET Core 集成测试中结合 WebApplicationFactory 使用 SQLite 内存数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Ocelot简易教程(五)之集成Iden
- 下一篇: AServer - 基于Asp.net