我正在使用 testify 测试 XML 封送处理,并strings.Contains用于检查我希望包含在 XML 中的行是否确实存在。但是,我想区分实际与所需的 xml。目前,我的代码看起来像:func (suite *BookSuite) TestXMLMarshal() { priceXML, priceErr := xml.Marshal(PriceType{Price: 10, Type: "IND"}) suite.Nil(priceErr) linePresent := strings.Contains(string(priceXML), `<PriceType Price="10" Type="IND"></PriceType>`) if true != linePresent { err := errors.New("Expected: \n" + `<PriceType Price="10" Type="IND"></PriceType>` + "\nGot: \n" + bookString) suite.Error(err, err.Error()) fmt.Println(err) }}xml 文件中的行比测试中的一行多,因此您可以想象 if 语句会很糟糕。关于清理这个更具可扩展性的任何想法?
1 回答
烙印99
TA贡献1829条经验 获得超13个赞
除非格式很重要,否则测试诸如 xml.Marshal 之类的东西的快速彻底方法是对对象进行编组和比较
func (suite *BookSuite) TestXMLMarshal() {
priceXML, priceErr := xml.Marshal(PriceType{Price: 10, Type: "IND"})
suite.Nil(priceErr)
var secondPrice PriceType
unerr := xml.Unmarshal(priceXML, &secondPrice)
suite.Nil(unerr)
if !reflect.DeepEqual(&priceXML,&secondPrice){
err := fmt.Errorf("Expected: '%+v'\nGot: %+v\n",priceXML,secondPrice)
suite.Error(err, err.Error())
fmt.Println(err)
}
}
没有经过测试,但应该是这样的。
- 1 回答
- 0 关注
- 161 浏览
添加回答
举报
0/150
提交
取消
