- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我通过以下代码模拟了 FindAsync:
var brands = new Mock<DbSet<Brand>>();
ConfigureTheDbSet(brands, brandData);
brands.Setup(b => b.FindAsync(It.IsAny<object[]>())) //substitution of the .SelectAsync(id) method
.Returns<object[]>(ids => brands.Object.FirstOrDefaultAsync(b => b.BrandId == (int) ids[0]));
在我将 AsNoTracking 模拟添加到上下文之前,它一直正常工作:
var mockContext = new Mock<ReportDbContext>();
mockContext.Setup(m => m.Set<Brand>()).Returns(brands.Object);
mockContext.Setup(m => m.Set<Brand>().AsNoTracking()).Returns(brands.Object);
并且 FindAsync 返回 null。为了让它工作,我添加了以下模拟:
mockContext.Setup(m => m.Set<Brand>().FindAsync(It.IsAny<object[]>()))
.Returns<object[]>(async d => await brands.Object.FindAsync(d));
有人知道为什么会这样吗?
最佳答案
IMO,您应该模拟接口(interface),例如 IBrandRepository。否则 mock 的意义何在? - 你可以只创建你的类的一个实例,调用 FindAsync() 并像往常一样断言结果..
以下是我如何将 Moq 与接口(interface)一起使用,例如 repo 接口(interface);
// arrange
var mockRepo = new Mock<IBrandRepository>();
mockRepo.Setup(o => o.FindAsync(It.IsAny<string>())).ReturnsAsync(new Brand[] { ... });
var someClass = new SomeClass(IBrandRepository); // someClass that use IBrandRepository
// act
string search = "brand1 brand2"; // what the user searches for
var results = someClass.FindBrands(searchText) // internally calls IBrandRepository.FindAsync()
// assert
// Assert.AreEqual(results.Count(), ...
关于c# - 模拟 FindAsync 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43369420/
public class Foo { public int Id { get; set; } public int UserId { get; set; } } 这似乎是异步执行此
我通过以下代码模拟了 FindAsync: var brands = new Mock>(); ConfigureTheDbSet(brands, brandData); brands.Setup(b
UserManager.FindAsync 总能找到匹配项,即使我输入了错误的用户名和密码,它也总是会返回某种用户 ID。 [HttpPost] public ActionResult Mobilel
在我的代码中,我曾经使用 await FindAsync 加载相关实体,希望我能更好地符合 c# async 准则。 var activeTemplate = await exec.DbContext
新的 ASP.NET MVC 5 项目模板生成一个准备好的 AccountController,其中包括 UserManager 的基本实现和底层存储(IUserStore >、IRoleStore
我正在编写一个测试来检查应用程序日志,每分钟可能有数千条日志。我想使用 FindAsync 获取最新的日志。但有时服务会中断,因此使用时间值并不准确: // may return many or no
我有多对多关系,我正在使用 ASP.Net Core2.2 MVC 和 EF。 根据我的阅读,我了解到目前我必须为连接表创建一个 CLR 类。 我的代码: 模型: public class Post
还有其他类似的问题,但据我所知与实际的 FindAsync 无关。 我的 ClientsController 调用 ClientService.GetClients,它使用 mongo 驱动程序查询
我正在编写一个非常非常简单的查询,它只是根据其唯一 ID 从集合中获取文档。经过一些挫折(我是 mongo 和 async/await 编程模型的新手),我想通了: IMongoCollection
我正在编写一个非常非常简单的查询,它只是根据其唯一 ID 从集合中获取文档。经过一番挫折(我是 mongo 和 async/await 编程模型的新手),我想通了: IMongoCollection
我正在使用 FluentValidation 来验证对象。我只是检查用户是否存在于数据库中。就我而言,DbContext.Entity.Find 工作得很好,但 DbContext.Entity.Fi
我使用以下代码按字段名称过滤集合。但是 result.Current 总是 null 而数据存在于 MongoCollection 中。有什么想法吗? 代码 public async Task Fin
我是 ASP.NET Identity 的新手。为了更好地理解事情,我正在做 ASP.NET Identity 的自定义实现。我能够使用自定义代码成功创建用户。然而 FindAsync(usernam
我们有 3 种不同的方法从 EFCore 获取单个项目,它们是 FirstOrDefaultAsync()、SingleOrDefaultAsync()(包括没有返回默认值的版本,我们也有FindAs
我目前得到的代码工作正常 public async Task Details(Guid? id) { if (id == null) { return new Http
FindAsync() 是否有原因? IDbSet 中省略了方法界面? Find是界面的一部分,异步版本不可用似乎很奇怪。我需要转换到 DbSet访问它,这有点麻烦: User user = awai
我是 MVC 和 EF 的新手,我正在开发一个使用身份进行用户和角色管理的项目。在 Visual Studio 的预定义登录函数中,有一个名为 FindAsync 的函数,用于通过用户名和密码获取用户
我有一个来自 Parse.com 的在线数据库。有一个表“Vakantie”,包含 3 个对象,所以表数据不大。 我正在尝试从该表中获取所有对象,以便我可以通过 View 中的 VakantieCon
我的应用程序遇到了一个非常奇怪的问题... 我不知道为什么在我点击 FindAsync 函数时会收到此错误消息: CREATE DATABASE permission denied in databa
我已经实现了自定义 UserStore , 它实现了 IUserStore和 IUserPasswordStore . 我的登录操作方法如下: if (ModelState.IsValid) {
我是一名优秀的程序员,十分优秀!