使用NSubstitute 4.0模拟EF dbContext异步方法

时间:2019-03-25 10:23:46

标签: c# entity-framework unit-testing mocking nsubstitute

尝试在我的DbContext上使用NSubstitute时出现错误。到目前为止,我已经使用EntityFramework.Testing包和以下代码在测试中设置了DbContext。非常简单,这是他们网站上的示例:

// Create some test data
var data = new List<Blog>
{
    new Blog{ Name = "BBB" },
    new Blog{ Name = "CCC" },
    new Blog{ Name = "AAA" }
};

// Create a DbSet substitute.
var set = Substitute.For<DbSet<Blog>, IQueryable<Blog>, IDbAsyncEnumerable<Blog>>()
                    .SetupData(data);

var context = Substitute.For<BloggingContext>();
context.Blogs.Returns(set);

这与版本3.1.0很好地配合,但是如果我将NSubstitute升级到4.0,则会引发以下异常。

  

System.MissingMethodException   找不到方法:“ System .__ Canon NSubstitute.Arg.Any()”。    NSubstitute.NSubstituteDbSetExtensions.SetupData [TEntity](DbSet'1 dbSet,ICollection'1数据,Func'2查找)

我想知道是否有一个很好的解决方案来模拟具有异步支持的EF上下文,还是我应该坚持使用3.1.0。

0 个答案:

没有答案