比较列表时Xunit测试失败
这是我的单位测试,并且会失败。 请帮助我解决这个问题。
更新问题:
看来我正在尝试单元测试jsonserializer.deserialize
方法。那么这是合法的单位测试吗?
消息:
Expected got to be equal to {
JsonFromTo.CMSContacts.ContactsFilter
{
cms = "asees",
groups = {"jio", "jiso"}
},
JsonFromTo.CMSContacts.ContactsFilter
{
cms = "bsees",
groups = {"jto"}
}
}
, but {
JsonFromTo.CMSContacts.ContactsFilter
{
cms = "asees",
groups = {"jio", "jiso"}
},
JsonFromTo.CMSContacts.ContactsFilter
{
cms = "bsees",
groups = {"jto"}
}
}
differs at index 0.
正在测试的系统:
public IEnumerable<ContactsFilter> GetFilters(string json)
{
return JsonSerializer.Deserialize<List<ContactsFilter>>(json);
}
public class ContactsFilter
{
public string cms { get; set; }
public List<string> groups { get; set; }
}
单元测试:
public class CmsContactsTest
{
public const string Filters = @"[{""cms"": ""asees"",""groups"": [""jio"",""jiso""]},{""cms"": ""bsees"",""groups"": [""jto""]}]";
[Fact]
public void Should_Return_List()
{
//arrange
var want = new List<ContactsFilter>()
{
new ContactsFilter()
{
cms = "asees",
groups = new List<string>{ "jio", "jiso" }
},
new ContactsFilter()
{
cms = "bsees",
groups = new List<string>{ "jto"}
}
};
var got = new CmsContacts().GetFilters(Filters);
got.Should().Equal(want);
}
}
Here is my unit test and it fails with a message.
Kindly help me fix this.
Update Question:
It looks like i am trying to unit test the JsonSerializer.Deserialize
method. So is this a legitimate unit test?
Message:
Expected got to be equal to {
JsonFromTo.CMSContacts.ContactsFilter
{
cms = "asees",
groups = {"jio", "jiso"}
},
JsonFromTo.CMSContacts.ContactsFilter
{
cms = "bsees",
groups = {"jto"}
}
}
, but {
JsonFromTo.CMSContacts.ContactsFilter
{
cms = "asees",
groups = {"jio", "jiso"}
},
JsonFromTo.CMSContacts.ContactsFilter
{
cms = "bsees",
groups = {"jto"}
}
}
differs at index 0.
System Under Test:
public IEnumerable<ContactsFilter> GetFilters(string json)
{
return JsonSerializer.Deserialize<List<ContactsFilter>>(json);
}
public class ContactsFilter
{
public string cms { get; set; }
public List<string> groups { get; set; }
}
Unit Test:
public class CmsContactsTest
{
public const string Filters = @"[{""cms"": ""asees"",""groups"": [""jio"",""jiso""]},{""cms"": ""bsees"",""groups"": [""jto""]}]";
[Fact]
public void Should_Return_List()
{
//arrange
var want = new List<ContactsFilter>()
{
new ContactsFilter()
{
cms = "asees",
groups = new List<string>{ "jio", "jiso" }
},
new ContactsFilter()
{
cms = "bsees",
groups = new List<string>{ "jto"}
}
};
var got = new CmsContacts().GetFilters(Filters);
got.Should().Equal(want);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该使用 beegivalentto
报价
beegivalentto
source codewith
均等>等于< /code>,使用其
System.Object.Equals(System.Object)
比较元素You should to use BeEquivalentTo
Quoting
BeEquivalentTo
source code:With
Equal
, elements are compared using theirSystem.Object.Equals(System.Object)