断言Web API方法返回特定类型?

时间:2016-01-14 12:25:29

标签: c# unit-testing

我有一个Web API 2.0项目,其中包含以下方法:

public IEnumerable<Fruit> Get()
{
    // get list of fruit
    var listOfFruit = GetFruitsFromService();

    // return list of fruit
    return listOfFruit;
}

然后我就像这样进行单元测试:

[TestMethod]
public void Get_Should_Bring_Back_List_Of_Fruit()
{
    // set
    var controller = new FruitController();
    var listOfFruits = new List<FruitRM>();
    // act
    var result = controller.Get() as IList<FruitRM>;
    // assert
    Assert.AreEqual(listOfFruits, result);
}

该测试失败了。如何测试Web API操作是否返回FruitRM的列表?

1 个答案:

答案 0 :(得分:2)

您没有检查类型,您正在检查列表的一个实例是否等于其他内容(可能另一个实例到空列表)。这永远不会成真。

如果要检查类型,请检查类型:

Assert.IsInstanceOfType(result, typeof(IList<FruitRM>));

注意:您似乎检查了实现除返回类型之外的其他接口。我不会这样做。该方法应返回IEnumerable<Fruit>。如果它应该返回IList<Fruit>,请更改返回类型,而不是单元测试。