C# 向模型列表添加模型数据的xUnit单元测试

C# 向模型列表添加模型数据的xUnit单元测试,c#,unit-testing,xunit,nancy,C#,Unit Testing,Xunit,Nancy,我正在尝试将我的用户模型添加到用户的列表。以下是我的测试: [Fact] public void Add_User_To_User_List() { //Given var fakeGuid = new Guid("36a84feb-cd51-4f1f-9b19-6d8dc2c89d4a"); _jsonService.DeserializeObject<User>(_fakeUserJsonFile).Returns

我正在尝试将我的
用户
模型添加到
用户的
列表
。以下是我的测试:

[Fact]
    public void Add_User_To_User_List()
    {
        //Given
        var fakeGuid = new Guid("36a84feb-cd51-4f1f-9b19-6d8dc2c89d4a");

        _jsonService.DeserializeObject<User>(_fakeUserJsonFile).Returns(_fakeUserList);
        _guidService.NewGuid().Returns(fakeGuid);
        _jsonService.SerializeObject(_fakeUserJsonFile, _fakeUpdatedUserList).Returns(true);

        //When
        var result = _userService.AddUser(_fakeUser);

        //Then
        What Goes Here?????
    }

我只想测试传递到方法中的
用户
是否添加到
用户列表
。显然,我真正测试的唯一代码是
userList.Add(user)
但我只是不知道怎么做,有人能帮忙吗?

您必须检查您的服务结果是否如您预期的那样是idd:

//Then
Assert.IsTrue(result);
您的下一个测试可能是测试AddUser的故障,其中
\u jsonService.SerializeObject(\u fakeUserJsonFile,\u fakeUpdatedUserList).Returns(false)
Assert.IsFalse(结果)

类似这样的代码:

Assert.Contains(_fakeUser, _fakeUserList);

由于您可以控制伪造的json服务返回的用户列表,因此您可以在测试结束时断言它包含正确的用户。

因此,即使我没有测试该部分测试,我也断言该方法为true,我正在测试
userList.Add(user)方法的一部分?我已经这样做了,当它到达
var serializeObject=\u jsonService.serializeObject(\u fileName,userList)
serializeObject
返回true,现在我查看了
\u文件名
userList
参数,它与我的模拟数据相同,但返回false?我已经对
\u jsonService.SerializeObject(\u fileName,userList)进行了单元测试每次都会通过,我的模拟数据是正确的,所以我不知道为什么会失败?它在
\u fakeUpdateUserList
参数上出错,但它是正确的,所以我不知道为什么它在这个阶段会失败。您的\u jsonService被注入到您的用户逻辑类中了吗?看起来你调用的是服务而不是模拟的服务。没有
\u jsonService
在构造函数中被模拟出来,唯一可能的是我写的
\u fakeUpdateUserList
错了,但不是。这仍然失败,当我调试它时,这行代码
var serializeObject=\u jsonService.serializeObject(\u fileName,userList)返回false。我认为这是因为即使是相同的数据,它对数据的引用也不同,所以在内存中,它实际上是不同的,我该如何处理这个问题呢?
Assert.Contains(_fakeUser, _fakeUserList);