2014-05-23 63 views
0

我試圖單元測試將User模型添加到list的。下面是我的測試:xUnit單元測試將模型數據添加到模型列表中

[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????? 
    } 

的方法我測試:

public bool AddUser(User user) 
    { 
     var userList = GetUsers(); 

     user.ID = _guidService.NewGuid(); 

     userList.Add(user); 

     var serializeObject = _jsonService.SerializeObject(_fileName, userList); 

     return serializeObject; 
    } 

我只是想測試傳入方法的User添加到User List。所以很顯然,我真正測試的唯一代碼是userList.Add(user);,但我只是不知道如何做到這一點,任何人都可以幫忙嗎?

回答

0

你必須檢查,如果你希望它是你的服務的結果IDD真:

//Then 
Assert.IsTrue(result); 

你的下一個考驗將可以在ADDUSER的故障進行檢測,其中_jsonService.SerializeObject(_fakeUserJsonFile, _fakeUpdatedUserList).Returns(false);Assert.IsFalse(result);

+0

所以我斷言該方法是真的,即使我沒有測試那部分測試,我測試'userList.Add(user);'方法的一部分? – Paddy1990

+0

我已經完成了這一步,當它到達'var serializeObject = _jsonService.SerializeObject(_fileName,userList);','serializeObject'返回true,現在我看了'_fileName'和'userList'參數,它和我的模擬數據,但它返回false?我已經有了一個'_jsonService.SerializeObject(_fileName,userList)'的單元測試;'每次都會傳遞,我的模擬數據是正確的,所以我不知道它爲什麼會失敗呢?它在'_fakeUpdatedUserList'參數上觸發,但它是正確的,所以我不知道爲什麼在這個階段失敗 – Paddy1990

+0

是否將_jsonService注入到您的用戶邏輯類中?看來你正在呼叫服務而不是嘲弄的服務。 – Peter

0

事情是這樣的:

Assert.Contains(_fakeUser, _fakeUserList); 

既然你控制的,其列出了僞造的JSON的服務回報作爲使用的列表您可以斷言它在測試結束時包含正確的用戶。

+0

這仍然失敗,當我通過它調試這行代碼'var serializeObject = _jsonService.SerializeObject(_fileName,userList);'返回false。我認爲這是因爲即使它是相同的數據,它是對這些數據的不同引用,所以在內存中它實際上是不同的,我如何解決這個問題? – Paddy1990