最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

對Entity?Framework?Core進(jìn)行單元測試

 更新時間:2022年03月24日 11:36:51   作者:.NET開發(fā)菜鳥  
這篇文章介紹了對Entity?Framework?Core進(jìn)行單元測試的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、引言

我們先來講解如何對EntityFrameworkCore進(jìn)行單元測試,這里我們使用內(nèi)存數(shù)據(jù)庫進(jìn)行測試。使用內(nèi)存數(shù)據(jù)庫需要安裝Microsoft.EntityFrameworkCore.InMemory這個包。

二、創(chuàng)建測試項目

我們還是以上面文章中創(chuàng)建的項目為例,在解決方案中添加一個測試項目,這里選擇使用xUnit作為測試項目:

創(chuàng)建完成后的項目結(jié)構(gòu)如下圖所示:

我們首先在EFCoreTest項目中安裝Microsoft.EntityFrameworkCore和Microsoft.EntityFrameworkCore.InMemory這兩個包,直接在NuGet里面安裝即可,這里不在描述安裝步驟。添加完成以后添加對實體的引用。

我們創(chuàng)建數(shù)據(jù)上下文,繼承自DbContext:

/// <summary>
/// 數(shù)據(jù)上下文,繼承自DbContext
/// </summary>
public class EFCoreDbContext:DbContext
{
    /// <summary>
    /// 通過DbContextOptions選項給父類構(gòu)造傳參
    /// </summary>
    /// <param name="options"></param>
    public EFCoreDbContext(DbContextOptions options):base(options)
    {

    }

    // DbSet屬性
    public DbSet<Blog> Blogs { get; set; }
}

我們在創(chuàng)建一個方法,返回類型是DbContextOptions類型:

public static DbContextOptions<EFCoreDbContext> CreateDbContextOptions(string databaseName)
{
    var serviceProvider = new ServiceCollection().
        AddEntityFrameworkInMemoryDatabase()
        .BuildServiceProvider();

    var builder = new DbContextOptionsBuilder<EFCoreDbContext>();
    builder.UseInMemoryDatabase(databaseName)
        .UseInternalServiceProvider(serviceProvider);

    return builder.Options;
}

最后編寫測試代碼,整體代碼如下:

using EFCore.Model;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using Xunit;

namespace EFCoreTest
{

/// <summary>
/// 數(shù)據(jù)上下文,繼承自DbContext
/// </summary>
public class EFCoreDbContext:DbContext
{
    /// <summary>
    /// 通過DbContextOptions選項給父類構(gòu)造傳參
    /// </summary>
    /// <param name="options"></param>
    public EFCoreDbContext(DbContextOptions options):base(options)
    {

    }

    // DbSet屬性
    public DbSet<Blog> Blogs { get; set; }
}


    public class UnitTest1
    {

        public static DbContextOptions<EFCoreDbContext> CreateDbContextOptions(string databaseName)
        {
            var serviceProvider = new ServiceCollection().
                AddEntityFrameworkInMemoryDatabase()
                .BuildServiceProvider();

            var builder = new DbContextOptionsBuilder<EFCoreDbContext>();
            builder.UseInMemoryDatabase(databaseName)
                .UseInternalServiceProvider(serviceProvider);

            return builder.Options;
        }

        /// <summary>
        /// 測試方法,這里使用異步
        /// </summary>
        [Fact]
        public async void Test1()
        {
           var options=  CreateDbContextOptions("batabase");
            var context = new EFCoreDbContext(options);
            // 添加數(shù)據(jù)
            context.Blogs.Add(new Blog() { Name = "ef core" });
            // 保存
            context.SaveChanges();
            // 查詢數(shù)據(jù)
            var blog = await context.Blogs.FirstOrDefaultAsync(p => p.Id == 1);
            // 斷言
            Assert.NotNull(blog);
        }
    }
}

在測試方法上面右鍵,選擇“Live Unit Testing”,這個是實時的,我們可以在輸出窗口里面看到實時的信息:

啟動測試,在輸出窗口查看測試結(jié)果:

可以看到測試代碼前面都打勾了,表示測試通過。我們修改測試代碼,改為查詢id為2的數(shù)據(jù):

因為我們只添加了一條數(shù)據(jù),沒有id為2的那條數(shù)據(jù),所以測試報錯了。

到此為止,我們就完成了一個簡單的單元測試。

到此這篇關(guān)于對Entity Framework Core進(jìn)行單元測試的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SQL Server 2008 R2:error 26 開啟遠(yuǎn)程連接詳解

    SQL Server 2008 R2:error 26 開啟遠(yuǎn)程連接詳解

    本篇文章小編為大家介紹,SQL Server 2008 R2:error 26 開啟遠(yuǎn)程連接詳解。需要的朋友參考下
    2013-04-04
  • asp.net core項目授權(quán)流程詳解

    asp.net core項目授權(quán)流程詳解

    本文詳細(xì)講解了asp.net core項目的授權(quán)流程,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • Automation服務(wù)器不能創(chuàng)建對象的多種解決辦法

    Automation服務(wù)器不能創(chuàng)建對象的多種解決辦法

    這篇文章主要介紹了Automation服務(wù)器不能創(chuàng)建對象的多種解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • .NET C#創(chuàng)建WebService服務(wù)簡單實例

    .NET C#創(chuàng)建WebService服務(wù)簡單實例

    這篇文章主要為大家詳細(xì)介紹了.NET C# 創(chuàng)建WebService服務(wù)簡單實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • ASP.NET WebAPI2復(fù)雜請求跨域設(shè)置的方法介紹

    ASP.NET WebAPI2復(fù)雜請求跨域設(shè)置的方法介紹

    這篇文章主要給大家介紹了關(guān)于ASP.NET WebAPI2復(fù)雜請求跨域設(shè)置的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用ASP.NET具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 使用asp.net的pageDataSource中時索引問題解決方法

    使用asp.net的pageDataSource中時索引問題解決方法

    當(dāng)前頁面在數(shù)據(jù)的除第一頁的任何一個頁面時,重新條件查詢并且是新條件的總頁數(shù)小于剛才查詢得到的頁碼時,就會出現(xiàn)“索引 20 不是為負(fù)數(shù),就是大于行數(shù)”的類似的錯誤
    2013-04-04
  • TreeView無刷新獲取text及value實現(xiàn)代碼

    TreeView無刷新獲取text及value實現(xiàn)代碼

    這篇文章介紹了TreeView無刷新獲取text及value實現(xiàn)代碼,有需要的朋友可以參考一下
    2013-10-10
  • 如何使用.NET Core 選項模式【Options】

    如何使用.NET Core 選項模式【Options】

    這篇文章主要介紹了如何使用.NET Core 選項模式,文中講解非常詳細(xì),代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • asp.net Gridview行綁定事件新體會

    asp.net Gridview行綁定事件新體會

    最近在做統(tǒng)計GridView中某一列的加總值,之前有在RowDataBound事件中中逐筆加總,經(jīng)過測試才知道,這是不正確的,并不能得到所有資料的加總值。
    2009-11-11
  • C#各種集合操作的性能總結(jié)

    C#各種集合操作的性能總結(jié)

    本文主要記錄的是C#各種集合操作的性能,下面的標(biāo)記說明描述標(biāo)記的時間,下面的表格對比各種集合各種操作的時間,需要了解的朋友可以參考下
    2012-12-12

最新評論

桐庐县| 清河县| 丰镇市| 蛟河市| 乌恰县| 调兵山市| 沾化县| 许昌县| 福清市| 蕉岭县| 武汉市| 泗阳县| 三门峡市| 石狮市| 长葛市| 丹阳市| 商都县| 天峻县| 巴林左旗| 那曲县| 松溪县| 东丽区| 文安县| 林周县| 太和县| 房山区| 萍乡市| 麻阳| 马尔康县| 临沭县| 顺平县| 依安县| 英吉沙县| 望江县| 长顺县| 芮城县| 卓尼县| 广宗县| 阿拉善左旗| 子长县| 澄江县|