相关疑难解决方法(0)

模拟AsNoTracking实体框架

我如何模拟AsNoTracking方法?
在下面的示例中,DbContext已注入服务类.如果我从GetOrderedProducts方法中删除AsNoTracking扩展方法,但是AsNoTracking测试失败,因为它返回null,它工作正常.我也尝试过模拟AsNoTracking以返回正确的值,但它没有用.

public interface IUnitOfWork
{
    IDbSet<TEntity> Set<TEntity>() where TEntity : class;
    int SaveAllChanges();
}

public class Entites : DbContext, IUnitOfWork
{
    public virtual DbSet<Product> Products { get; set; }  // This is virtual because Moq needs to override the behaviour

    public new virtual IDbSet<TEntity> Set<TEntity>() where TEntity : class   // This is virtual because Moq needs to override the behaviour 
    {
        return base.Set<TEntity>();
    }

    public int SaveAllChanges()
    {
        return base.SaveChanges();
    }
}

    public class ProductService
{
    private readonly IDbSet<Product> …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing entity-framework moq mocking

18
推荐指数
2
解决办法
6367
查看次数

Moq并设置DB Context

我有一个Entity Framework数据库上下文文件.我正在尝试在NUnit中设置Moq框架.目前收到Moq Nunit测试的错误.如何设置DBContext,并将项目添加到产品表?

"没有为此DbContext配置数据库提供程序.可以通过覆盖DbContext.OnConfiguring方法或在应用程序服务提供程序上使用AddDbContext来配置提供程序.如果使用AddDbContext,则还要确保您的DbContext类型接受DbContextOptions对象它的构造函数并将其传递给DbContext的基础构造函数."

Electronics DB上下文文件

public partial class ElectronicsContext : DbContext
{
    public ElectronicsContext()
    {
    }

    public ElectronicsContext(DbContextOptions<ElectronicsContext> options)
        : base(options)
    {
    }

    public virtual DbSet<Product> Product { get; set; }
    public virtual DbSet<ProductCategory> ProductCategory { get; set; }
Run Code Online (Sandbox Code Playgroud)

Startup.cs

    var connection = @"Server=localhost;Database=Electronics;Trusted_Connection=True;ConnectRetryCount=0";
    services.AddDbContext<ElectronicsContext>(options => options.UseSqlServer(connection));
Run Code Online (Sandbox Code Playgroud)

Moq Nunit测试

 [SetUp]
 public void Setup()
 {
    var ElectronicsContext = new Mock<ElectronicsContext>();
    var ProductRepository = new Mock<ProductRepository>();

    Product producttest = new Product();
    _dbContext.Product.Add(new Product {ProductId = 1, ProductName = "TV", ProductDescription = …
Run Code Online (Sandbox Code Playgroud)

c# nunit moq entity-framework-core asp.net-core

0
推荐指数
1
解决办法
2549
查看次数