当我执行所有控制器的模拟测试用例时,一些测试用例会失败,但它们会分别通过。
我使用Dispose()时,我在使用与单元测试相同的变量,但仍然无法解决问题。
在我的项目中,我做了一个常见的设置示例:AbcMock
public class AbcMock
{
public static Mock<IAbcMock> abcMock;
public static void Setup()
{
abcMock = new Mock<IAbcMock>();
abcMock.Setup(x => x.GetAll(It.IsAny<Guid>())).Returns(1);
}
}
然后我对另一个文件中的所有服务进行了通用设置 假设baseController.cs具有以下设置
public Mock<IAbcMock> abcMock ;
abcMock = AbcMock.abcMock;
AbcMock.Setup();
我的actul测试控制器
public class AbcMockTestController : baseController
{
AbcService abcService ;
public ClaimExpertRolesMockTestController()
{
abcService = new AbcService (foo.Object, boo.Object);
}
[Fact]
public void GetAll_Passing_Valid_Data()
{
abcMock.Setup(x => x.GetAll(It.IsAny<Guid>())).Returns(2);
var result = abcService.GetAll(Guid.NewGuid());
Assert.Equal(ProcessStatusEnum.Success, result.Status);
}
[Fact]
public void GetAll_Passing_Valid_Data()
{
abcMock.Setup(x => x.GetAll(It.IsAny<Guid>())).Returns(3);
var result = abcService.GetAll(Guid.NewGuid());
Assert.Equal(ProcessStatusEnum.Success, result.Status);
}
}
这是我的PROD代码设置。在阅读了很多文章之后,我知道使我的模拟对象成为静态对象使mi问题成为现实,因为我的测试用例已经通过了直观检查,但是在全部运行之后却失败了。那么,有什么建议可以在不改变代码的情况下解决我的问题?