XUnit 测试错误:无法将 system.collections.generic.list < "filename.class" >转换为字符串



当我尝试构建一个 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;
}

我的卡丁车项目 :

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 的字符串项。

您正在尝试比较两种不同的类型。从 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会导致混淆,因为用户/编码人员不知道该类型。

但请注意,应审查该函数的逻辑。它只会始终返回一个包含一项的集合,因为列表是在函数中创建和填充的。

相关内容

最新更新