Moq(发音为“Mock-you”或只是“Mock”)是.NET的一个模拟框架,它大量使用lambdas和LINQ表达式树。
我得到了这个: 私人列表> m_tempCars 公共 IList> CarTypes { 得到 { 如果(m_tempCars == null...
如何在 Moq 中设置通用返回类型? 我有以下界面: 公共接口 IFoo { T 条(); } 现在我想设置 Bar() 在测试中工作 var foo = 新...
如何使用 Moq 模拟 ResourceGroupCollection?
我的代码如下: SubscriptionResource 订阅 =等待armClient.GetDefaultSubscriptionAsync(); var resourceGroup = subscription.GetResourceGroups().FirstOrDefault(rg => rg.Data.Name.
模拟 IRestClient.ExecuteAsync 结果上的空数据
我有一个使用 RestSharp (110.2.0) 的方法,我想对其进行单元测试,但遇到困难。 样品方法: 私有IRestClient _restClient; 公共异步任务 GetToken() { 变量...
我正在尝试最小起订量我拥有的存储库,其定义为: 公共 IQueryable GetAll( 表达式> 谓词 = null, 功能 我正在尝试最小起订量我拥有的存储库,其定义为: public IQueryable<TEntity> GetAll( Expression<Func<TEntity, bool>> predicate = null, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null, Func<IQueryable<TEntity>, IIncludableQueryable<TEntity, object>> include = null, bool disableTracking = true ) 有办法嘲笑这个吗?我希望使用我提供存储库的模拟数据来执行查询。我不知道如何告诉 MOQ,当我调用 GetAll 时,我希望它仍然运行传入的查询,但针对我提供的数据集执行此操作。所以它不会进入数据库,而是针对我配置的模拟集。我能够创建数据,它包含 12 条记录,但我希望 getall moq 调用来执行其查询并将其过滤为仅应返回的 2 条记录。 调用发生的实际服务是: var list = await _unitOfWork.GetRepository<CASE_ACTIVITY>() .GetAll(predicate: x => x.SM_SITE_ID == siteId && x.CMS_USER_ID == userId && x.IS_DELETED == "N" && x.Appointment.IS_DELETED == "N" && x.Appointment.IS_ARCHIVED == "N" && x.IS_ARCHIVED == "N" && ( (x.Appointment.APPOINTMENT_DATETIME.HasValue && x.Appointment.APPOINTMENT_DATETIME.Value.Date == DateTime.Today.Date) || (!x.Appointment.APPOINTMENT_DATETIME.HasValue && x.ACTIVITY_STATUS_ID == _appSettings.CASE_ACTIVITY_STATUS_ID_PENDING) ) ) .Include(x => x.Activity_Lookup) .Include(x => x.Appointment) .ThenInclude(x => x.Cms_Client) .Include(x => x.Cms_Case) .ToListAsync(); 假设您对 GetRepository() 方法有足够的控制权以使 it 返回您的模拟存储库,则模拟方法本身相当简单(如果有点冗长)。我刚刚将 GetAll 方法转储到名为 IRepository 的接口中,这就是模拟的样子。在 Returns 方法内部,您可以根据需要访问要执行或忽略的每个参数。 var mock = new Moq.Mock<IRepository>(); mock.Setup(a => a.GetAll<int>(It.IsAny<Expression<Func<int, bool>>>(), It.IsAny<Func<IQueryable<int>, IOrderedQueryable<int>>>(), It.IsAny<Func<IQueryable<int>, IIncludableQueryable<int, object>>>(), It.IsAny<bool>())) .Returns<Expression<Func<int, bool>>, Func<IQueryable<int>, IOrderedQueryable<int>>, Func<IQueryable<int>, IIncludableQueryable<int, object>>, bool>((param1, param2, param3, param4) => { return new[] { 1, 2, 3 }.AsQueryable(); }); var result = mock.Object.GetAll<int>(); 从这里开始,如果不看到更多代码,我们就无能为力。不过,从抽象的角度来说,您将把您的 mock.Object (其类型为 IRepository)并将其提供给 GetRepository() 从中提取的任何集合。当然,还要注意,我使用 int 作为通用参数——您可以将其替换为您使用的任何类型。也许可以制作一个接受通用参数的模拟,但希望这不是必需的!
我已经在相同的场景下做了很多次,但这次失败了,我无法找出原因,请帮助我。 下面是我的代码,我已经尝试过最小起订量和
假设我有一个以这种方式实现的处理程序。没有存储库,逻辑按以下方式编写在处理程序内部。 既然我不应该嘲笑 EF,那怎么会......
我使用 NLog 4.5.11 进行日志记录,使用 moq 4.10.1 进行模拟。 我有一个中间件,它使用 NLog 将异常详细信息写入日志文件。 我需要在我的 API 项目中对中间件进行单元测试并检查...
使用 IServiceProvider.GetRequiredService 对方法进行单元测试会抛出“未注册类型‘<T>’的服务”
我有一个类,它在构造函数中将 IServiceProvider 作为参数,并在 Get() 方法中使用 IServiceProvider.GetRequiredService 返回一个对象。当对这个方法进行单元测试时看看
使用mockablequery.moq模拟 EF 扩展方法 - 不起作用
我有以下单元测试,需要使用最小起订量模拟 EF 扩展方法 .ToListAsync。由于起订量无法模拟静态方法,并且扩展方法是静态方法,所以我不得不使用...
我正在尝试为我编写的使用 SendGrid 发送电子邮件的方法编写单元测试。 我的方法是这样的: 公共异步任务SendEmail(TemplatedMailMessage emailMessage) { ...
我继承了一个asp.net web api项目,遵循正常的控制器-->服务-->存储库架构。这个项目没有单元测试,我正在尝试对其进行改造。 典型的
我有一个 dotnet core 6 函数,包含以下几行 var csv = new CsvReader(阅读器, 配置)) var 记录 = csv.GetRecords().ToList(); 我设置模拟来模拟某些对象......
我正在尝试对进行证书验证的服务进行单元测试。它将给定指纹与存储在 Azure Key Vault 中的证书上的指纹进行比较。 我的代码运行良好,但现在我......
我模拟了一个接口中的方法,该方法具有返回 true 的可选参数。 但是,根据我是否将所有可选参数传递给调用或仅传递必需的参数,我得到一个
如何模拟Microsoft Graph API SDK客户端?
我在项目中使用了Microsoft Graph SDK来调用图形API,为此我需要使用GraphServiceClient。 要使用 GraphServiceClient,我必须添加一些辅助类,其中 SDKHelper 是一个...
我需要一个帮助来解决.net中的模拟相关问题,我有一个带有以下代码的函数。 任务> GetAllAsync(表达式> 谓词,Func<
我正在尝试模拟内部类进行单元测试,由于一些循环依赖,我将无法使用此类的接口来模拟它,我还添加了单元测试程序集名称(确保我...
我的应用程序由C#开发(Microsoft.EntityFrameworkCore,版本6.0.25)。 我使用 Moq(版本 4.20.70)和 NUnit(版本 4.0.1)进行单元测试用例 我尝试了下面的方法来进行空检查, [
为什么我的受保护方法没有返回我在模拟中设置的内容?运行单元测试时,受保护的方法返回 99,但我期望返回 1,因为我在模拟中设置了它。 [测试方法]