gpt4 book ai didi

c# - 返回始终为空最小起订量

转载 作者:太空宇宙 更新时间:2023-11-03 12:14:58 25 4
gpt4 key购买 nike

我花了很多时间,看到了不同的答案,但不知道出了什么问题,无论我做什么,我总是得到返回值 null。

我希望返回值是一个对象(模拟对象等),我可以在其上执行断言操作。如果我对这个概念的理解有误,请告诉我。

[Fact]
public void ProjectTest()
{
var ProjectServiceMock = new Mock<IProjectService>();
var ProjectMock = new Mock<IProject>();
IProject project = ProjectMock.Object;
ProjectServiceMock.Setup(x => x.CreateProject(new Path("C:"), "S1")).Returns(project);
var addProjectViewModel = new AddProjectViewModel(ProjectServiceMock.Object);

IProjectService obj = ProjectServiceMock.Object;
var result = obj.CreateProject(new Path("C:"), "S1");
}

结果总是null

最佳答案

您在模拟的设置和调用之间传递了两个单独的实例,因此默认情况下它将返回 null

你要么使用同一个实例

[Fact]
public void ProjectTest() {
var ProjectServiceMock = new Mock<IProjectService>();
var ProjectMock = new Mock<IProject>();
IProject project = ProjectMock.Object;
var path = new Path("C:");
ProjectServiceMock.Setup(x => x.CreateProject(path, "S1")).Returns(project);
var addProjectViewModel = new AddProjectViewModel(ProjectServiceMock.Object);

IProjectService obj = ProjectServiceMock.Object;
var result = obj.CreateProject(path, "S1");
}

或者使用它的参数匹配器并不关心实际的参数实例

[Fact]
public void ProjectTest() {
var ProjectServiceMock = new Mock<IProjectService>();
var ProjectMock = new Mock<IProject>();
IProject project = ProjectMock.Object;
ProjectServiceMock.Setup(x => x.CreateProject(It.IsAny<Path>(), "S1")).Returns(project);
var addProjectViewModel = new AddProjectViewModel(ProjectServiceMock.Object);

IProjectService obj = ProjectServiceMock.Object;
var result = obj.CreateProject(new Path("C:"), "S1");
}

完成后,可以观察到基本上是在尝试测试模拟框架。提供的示例中没有测试实际代码。

尝试在您的测试中遵循 AAA 方法

[Fact]
public void ProjectTest() {
//Arrange
var ProjectServiceMock = new Mock<IProjectService>();
var ProjectMock = new Mock<IProject>();
IProject project = ProjectMock.Object;
ProjectServiceMock
.Setup(x => x.CreateProject(It.IsAny<Path>(), "S1"))
.Returns(project);
//System under test
var addProjectViewModel = new AddProjectViewModel(ProjectServiceMock.Object);

//Act
addProjectViewModel.SomeMethodToTest();
//...assumption is that `CreateProject(new Path("C:"), "S1")` will get called within
//...the method under test

//Assert
//...now assert expected behavior
}

引用 Moq Quickstart更好地了解如何使用该模拟框架

关于c# - 返回始终为空最小起订量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50203176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com