当我尝试构建xunit测试时,我的期望还可以,但是我给我的实际变量错误的东西。我正在学习xunit,此刻让我发疯。
我对以下方法的测试:
[Fact]
public void AddToKartMethod()
{
var expected = "item";
var actual = AddToKart.PutItemInKart("item", 3, 4.5);
Assert.Equal(expected, actual);
}
我的方法:
public static List<KartItem> PutItemInKart(string input, int inputNumber, double inputPrice)
{
List<KartItem> kart = new List<KartItem>();
kart.Add(new KartItem() {
Item = input,
Pound = inputNumber,
Cost = inputPrice
});;
return kart;
}
我的KartItem:
public class KartItem
{
public string Item { get; set; }
public int Pound { get; set; }
public double Cost { get; set; }
public KartItem(string item, int pound, double cost)
{
item = Item;
pound = Pound;
cost = Cost;
}
public KartItem()
{
}
}
在我的测试中,实际的下划线为红色,错误消息显示为“参数2:无法从Systems.Collections.Generic.List转换为字符串。我只想测试PutItemInKart中的字符串项。
答案 0 :(得分:0)
您正在尝试比较两种不同的类型。从KartItem对象中提取期望值,以与期望值进行比较
[Fact]
public void AddToKartMethod() {
//Arrange
string expected = "item";
//Act
List<KartItem> items = AddToKart.PutItemInKart(expected, 3, 4.5);
string actual = items[0].Item;
//Assert
Assert.Equal(expected, actual);
}
请注意用于变量的显式类型。在这种情况下,使用var
会引起混淆,因为用户/编码器不知道类型。
但是请注意,应该检查该功能的逻辑。由于列表是在函数中创建并填充的,因此它只会始终返回一个项目的集合。