2016-07-06 4 views
0

Я новичок в F # и пытаюсь изучить F #, написав модульные тесты для библиотеки C#.сравнить объекты экземпляра C# в f #

Ниже приведен пример 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# они также были бы разными. Вы сравниваете ссылки на экземпляры объектов. Вы создали два экземпляра. Эти экземпляры не равны. Либо ваш пользовательский класс должен реализовать Equals, либо вам нужно сравнить состояние, aka FirstName и LastName для фактического и ожидаемого. – rene

+0

Спасибо, сразу после публикации этого вопроса я наткнулся на аналогичный вопрос, заданный в C#. Спасибо, Рене! – Yousuf

ответ

0

Как упоминал Рене в комментариях, класс пользователя, необходимый для реализации Equals.