asp.net - 数据存储库中 Where 方法的模拟在存储库中的实际实现中返回 null
问题描述
我已经为 EF 核心中的一个类的编辑模型编写了一个测试。
public async Task<Expense> EditExpense(Expense model)
{
var expense = _dataRepository.Where<Expense>(x => x.Id == model.Id).ToList();
if(expense != null)
{
expense.ForEach(x =>
{
x.Name = model.Name;
x.AddedOn = model.AddedOn;
x.Amount = model.Amount;
x.Type = model.Type;
x.SplitOption = model.SplitOption;
x.Notes = model.Notes;
x.IsGroupExpense = model.IsGroupExpense;
});
return expense.FirstOrDefault();
}
else
{
return null;
}
}
我想使用 xUnit 和 Moq 测试这个方法,我还为它编写了一个方法,如下所示。
[Fact]
public async void UnitTest_IsExpenseEdited_ReturnsTrue()
{
var expenseCurrent = new Expense()
{
Id = 5,
Name = "Test Expense",
Amount = 1500,
AddedBy = "44db32c3-ad6a-4d68-a683-862be363f59c",
AddedOn = DateTime.Now,
Notes = "",
IsDeleted = false,
IsGroupExpense = false,
SplitOption = 1,
Type = 0
};
var expenseList = (new List<Expense>{ expenseCurrent });
var expenseAfterEdit = new Expense()
{
Id = 5,
Name = "Test Expense Edited",
Amount = 2000,
AddedBy = "44db32c3-ad6a-4d68-a683-862be363f59c",
AddedOn = DateTime.Now,
Notes = "Edited !!!",
IsDeleted = false,
IsGroupExpense = true,
SplitOption = 2,
Type = 0
};
_dataRepositoryMock.Setup(x => x.Where<Expense>(a => a.Id == expenseCurrent.Id)).Returns(expenseList as IQueryable<Expense>);
var expenseEdited = await _exepenseRepository.EditExpense(expenseAfterEdit);
Assert.Equal(expenseEdited, expenseAfterEdit);
}
但是在这里,该Where
方法返回 null
public async Task<Expense> EditExpense(Expense model)
{
var expense = _dataRepository.Where<Expense>(x => x.Id == model.Id).ToList(); in repository
}
我在上面的代码中得到了 var fee null。
请建议我应该在代码中包含什么以获得上述 var 费用中的值?
为了测试这个方法,我想创建一个要更新的假数据。请建议如何正确编写这个东西?
解决方案
推荐阅读
- mongodb-query - 如果mongodb中的键是uuid,如何选择值
- python - Bash脚本逐行读取文件,其中包含一些引用并包含空格的单词
- java - 用 URLClassLoader 加载 SPI 类上升 ClassNotFoundException
- rest - One Signal REST API - 获取模板列表
- javascript - 我在 Vue 中使用它时使用的 swiperis 错误
- python-3.x - 网页抓取亚马逊产品
- javascript - 在 const 类中处理函数?
- java - 使用 Azure SAS 令牌的放心请求始终返回 403
- c++ - 在 std::unique 之后重新排列向量元素
- python - 正确返回函数以在其他函数中使用