2015-10-28 2 views
2

Я пытаюсь использовать FluentAssertions, чтобы проверить мой UnitTest, что тип свойства в списке предметов имеет определенный тип.FluentAssertions Тип проверки

myObj.Items.OfType<TypeA>().Single() 
      .MyProperty1.GetType() 
       .Should().BeOfType<TypeB>(); 

К сожалению, мой тест выдает следующее сообщение об ошибке:

Ожидаемый тип быть TypeB, но нашел System.RuntimeType.

Почему он сказал, что нашел System.RuntimeType? Я использовал отладчик, чтобы проверить, что MyProperty1 имеет тип TypeB, и это ... я использую .BeOfType<> неправильно?

Заранее спасибо

+0

Можете ли вы пропустить .GetType()? Вы запрашиваете тип MyProperty1, но тип типа. Это 1 уровень слишком глубокий. – ntohl

ответ

6

Пожалуйста, пропустите .GetType(). Вы запрашиваете тип MyProperty1, но тип типа. Это 1 уровень слишком глубокий.

public class TypeB { } 

public class TypeA 
{ 
    public TypeB MyProperty1 { get; set; } 

    public TypeA() 
    { 
     MyProperty1 = new TypeB(); 
    } 
} 

[TestClass] 
public class UnitTest1 
{ 
    [TestMethod] 
    public void TestMethod1() 
    { 
     List<object> objects = new List<object>(); 
     objects.Add("alma"); 
     objects.Add(new TypeA()); 
     objects.OfType<TypeA>().Single().MyProperty1.Should().BeOfType<TypeB>(); 
    } 
} 
+0

oh god my bad ... сообщение об исключении было даже довольно очевидно .. спасибо :-) – xeraphim

+0

без проблем. Добро пожаловать :) – ntohl

Смежные вопросы