- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写单元测试。为了测试下面的方法,
public async Task<Guid> CreateWebJobStatus(string blobId, Guid loggedInUserId, string loggedInUserEmail) {
Guid webJobStatusId = Guid.NewGuid();
WebJobStatus newWebJobStatus = new WebJobStatus
{
WorkJobStatusId = webJobStatusId,
TransactionId = Guid.NewGuid(),
Status = (int)WebJobStatusEnum.PENDING,
BlobId = blobId,
UserId = loggedInUserId,
UserEmail = loggedInUserEmail,
};
await _dbContext.WebJobStatus.AddAsync(newWebJobStatus);
await _dbContext.SaveChangesAsync();
return webJobStatusId;
}
我模拟了 dbset 和 dbcontext
public async void CreateWebJobStatusTest() {
var dbOption = new DbContextOptions<TimeSeriesDbContext>();
var mockDbContext = new Mock<TimeSeriesDbContext>(dbOption);
var mockConfig = new Mock<IConfiguration>();
var instance = new WebJobStatusRepository(mockConfig.Object, mockDbContext.Object);
var mockValidWebJobId = "11111111-1111-1111-1111-111111111111";
var webjobStatusList = new List<WebJobStatus>() {
new WebJobStatus {
WorkJobStatusId = Guid.Parse(mockValidWebJobId),
GroupName = "testGroupName",
Status = 3,
CreatedDate = DateTimeOffset.UtcNow.AddDays(-10)
}
};
var mockWebJobDbSet = UnitTestUtil.CreateDbSetMock<WebJobStatus>(webjobStatusList.AsQueryable());
mockDbContext.Setup(x => x.WebJobStatus).Returns(mockWebJobDbSet.Object);
mockWebJobDbSet.Setup(x => x.AddAsync(It.IsAny<WebJobStatus>(), It.IsAny<System.Threading.CancellationToken>())).Callback((WebJobStatus wj) =>{webjobstatusList.add(wj);});
var mockuserId = Guid.Parse("22222222-1111-1111-1111-111111111111");
var result = await instance.CreateWebJobStatus("testBlobId.tsv", mockuserId, "testEmail");
Assert.IsType<Guid>(result);
mockDbContext.Verify(x => x.SaveChangesAsync(It.IsAny<System.Threading.CancellationToken>()), Times.Once);
mockWebJobDbSet.Verify(x => x.AddAsync(It.IsAny<WebJobStatus>(), It.IsAny<System.Threading.CancellationToken>()), Times.Once);
}
除了 AddAsync
之外,一切都按预期工作,异常(exception)是
Invalid callback. Setup on method with parameters (WebJobStatus,CancellationToken) cannot invoke callback with parameters (WebJobStatus).
有人知道吗?
最佳答案
您需要返回一个任务以允许异步/等待调用
await _dbContext.WebJobStatus.AddAsync(newWebJobStatus);
流向完成。
所以假设 Add 返回添加的对象
mockWebJobDbSet
.Setup(_ => _.AddAsync(It.IsAny<WebJobStatus>(), It.IsAny<System.Threading.CancellationToken>()))
.Callback((WebJobStatus model, CancellationToken token) => { webjobstatusList.Add(model); })
.Returns((WebJobStatus model, CancellationToken token) => Task.FromResult((EntityEntry<WebJobStatus>)null));
请注意,Setup
方法有两个参数,因此 Callback
和 Returns
也需要两个参数(如果需要)使用捕获的参数。
关于c# - 我如何模拟 AddAsync?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49142556/
我正在编写单元测试。为了测试下面的方法, public async Task CreateWebJobStatus(string blobId, Guid loggedInUserId, string
我想构建一个有问题的程序,我发现我的第一批涉及自定义组件的测试倾向于遵循代码: import mx.core.Application; import mx.events.FlexEvent
我正在使用 EFCore 5.0.0。 当我 AddAsync (person); 时,我应该得到一个临时的 ID,我使用这个 ID 为 PersonId 添加 School(如下代码所示)。最后,我
我理解为什么 EF 有 ToListAsync 或 SaveChangesAsync - 因为它等待数据库操作执行。但是 AddAsync 只返回 Task.FromResult - 那么为什么会有
有没有办法可以强制完成对 addAsync 的所有调用? @Test public void aTest() throws Exception { SomeDeferredTask nextT
我刚刚注意到 EF(此处使用版本 5)不提供 DeleteAsync()/AddAsync()。我还注意到像这样的项目: https://github.com/zzzprojects/EntityFr
我目前正在为我的 API 做基准测试,我注意到使用 EF Core 的第一次保存操作有点延迟。这种情况是在一段时间不活动后(假设 18 小时),第一个保存操作需要 1.5 秒才能执行,随后最多为 10
好的,这里有多个问题: 我试图了解有什么区别(除了明显的 异步)之间 AddAsync()和 Add() EF Core 中的方法? 你什么时候选择一个而不是另一个? 如果您选择一个而不是另一个以保持
上下文: 我正在使用 C# 中的 MS Graph API 创建新的 MS Teams 团队 我的代码: var newTeam = new Team() { DisplayName = mo
上下文: 我正在使用 C# 中的 MS Graph API 创建新的 MS Teams 团队 我的代码: var newTeam = new Team() { DisplayName = mo
我有一些代码可以获取或创建 Planner Bucket . public async Task GetOrCreateBucket(GraphServiceClient graphServiceCl
我是一名优秀的程序员,十分优秀!