2016-07-06 90 views
0

我是F#的新手,並試圖通過爲C#庫編寫單元測試來學習F#。比較f#中的c#實例對象#

下面是示例C#代碼 -

public class User 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

public class UserSelector 
{ 
    public User SelectUser() 
    { 
     return new User() { FirstName = "John", LastName = "Public" }; 
    } 
} 

在F#我寫單元測試的xUnit -

下面是樣品F#代碼 -

module UserSelectorTests = 

[<Fact>] 
let ``SelectUser Tests``() = 
    let actual = (new UserSelector()).SelectUser() 
    let expected = new User(FirstName = "John", LastName = "Public") 
    Assert.Equal(expected, actual) 

即使實際和預期的測試失敗也一樣。

有關如何比較F#中的對象的任何想法?

+8

在c#中它們也會有所不同。您正在比較對象實例的引用。你創建了兩個實例。這些情況並不相同。您的User類必須實現Equals,或者您必須比較實際的和預期的狀態,即FirstName和LastName。 – rene

+0

謝謝,就在發佈這個問題後,我偶然發現了在C#中提出的類似問題。謝謝rene! – Yousuf

回答

0

正如Rene在評論中提到的,User類需要實現Equals。