C# xUnit,Moq-测试.Net核心存储库
我正在学习用xUnit和Moq编写单元测试,我有点问题。我在一个测试中编写了两个测试,我添加了一个类别并下载了所有测试,通过Assert或其他方式进行检查。在第二种情况下,我还添加了类别,并获得了添加类别的详细信息,不幸的是,我无法显示下载类别的详细信息,这是TestCategoryDetails测试。我做错了什么C# xUnit,Moq-测试.Net核心存储库,c#,asp.net-core,.net-core,tdd,moq,C#,Asp.net Core,.net Core,Tdd,Moq,我正在学习用xUnit和Moq编写单元测试,我有点问题。我在一个测试中编写了两个测试,我添加了一个类别并下载了所有测试,通过Assert或其他方式进行检查。在第二种情况下,我还添加了类别,并获得了添加类别的详细信息,不幸的是,我无法显示下载类别的详细信息,这是TestCategoryDetails测试。我做错了什么 using Moq; using relationship.Models; using Xunit; using Xunit.Abstractions; namespace Tes
using Moq;
using relationship.Models;
using Xunit;
using Xunit.Abstractions;
namespace Testy
{
public class UnitTest1
{
private readonly ITestOutputHelper _output;
public UnitTest1(ITestOutputHelper output)
{
_output = output;
}
[Fact]
public void TestCategoryList()
{
var categoryMock = new Mock<ICategoryRepository>();
var contextMock = new Mock<AppDbContext>();
categoryMock.Setup(x => x.AddCategory(new GameCategory { Id= 1, Name = "Tester" }));
var result = categoryMock.Object;
Assert.NotNull(result.GameCategory());
}
[Fact]
public void TestCategoryDetails()
{
var categoryMock = new Mock<ICategoryRepository>();
var contextMock = new Mock<AppDbContext>();
categoryMock.Setup(x => x.AddCategory(new GameCategory { Id = 1, Name = "Tester" }));
var result = categoryMock.Object;
var categoryDetails = result.GetDetails(1);
Assert.NotNull(categoryDetails);
}
}
}
使用Moq;
使用关系模型;
使用Xunit;
使用Xunit.抽象;
名称空间测试
{
公共类UnitTest1
{
私有只读ITestOutputHelper\u输出;
公共单元测试1(ITestOutputHelper输出)
{
_输出=输出;
}
[事实]
公共void TestCategoryList()
{
var categoryMock=new Mock();
var contextMock=new Mock();
Setup(x=>x.AddCategory(新游戏类别{Id=1,Name=“Tester”}));
var result=categoryMock.Object;
Assert.NotNull(result.GameCategory());
}
[事实]
public void TestCategoryDetails()
{
var categoryMock=new Mock();
var contextMock=new Mock();
Setup(x=>x.AddCategory(新游戏类别{Id=1,Name=“Tester”}));
var result=categoryMock.Object;
var categorydeails=result.GetDetails(1);
Assert.NotNull(categoryDetails);
}
}
}
一般来说,我想通过检查如何添加、编辑、删除、下载所选存储库的所有类别和详细信息来测试我的存储库,不幸的是,我什么都没做。你在做的是尝试测试存储库抽象模型。但是您需要测试您的实现 使用db上下文进行测试的好方法是对真实上下文使用内存提供程序。详情请参阅: 最后可能是这样(第二次测试):
您所做的是尝试测试存储库抽象模型。但是您需要测试您的实现 使用db上下文进行测试的好方法是对真实上下文使用内存提供程序。详情请参阅: 最后可能是这样(第二次测试):
可以安全地说这不再是一个单元测试了吗?因为测试将调用数据库(即使它是内存中的数据库)?在我看来,这是一个集成测试。可以安全地说,这不再是一个单元测试了吗?因为测试将调用数据库(即使它是内存中的数据库)?这是一个集成测试。
...
[Fact]
public void TestCategoryDetails()
{
// arrange
var categoryRepository = new CategoryRepository(GetContextWithInMemoryProvider());
// act
categoryRepository.AddCategory(new GameCategory { Id = 1, Name = "Tester" });
var categoryDetails = categoryRepository.GetDetails(1);
// assert
Assert.NotNull(categoryDetails);
}
private AppDbContext GetContextWithInMemoryProvider()
{
// create and configure context
// see: https://docs.microsoft.com/en-us/ef/core/miscellaneous/testing/
}
...