0
testifyでXMLマーシャリングをテストし、strings.Contains
を使用してXMLに含まれると予想される行が実際に存在するかどうかを確認します。xml/stringsのテストに失敗した場合のカスタム出力の出力
しかし、実際の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)
}
}
あなたはif文は総額であることを行っていることを想像できるように、より多くの行が、テスト中に単一のものよりも、XMLファイルにあります。
現在、私のコードは次のように見えます。これをクリーンアップするアイデアは、それはよりスケーラブルですか?
ありがとうございました。しかしXMLの実際のフォーマットをテストしたいのは、XMLフォーマットを仕様している第三者によって消費されているからです(いくつかのフープを飛ばしなければなりません)。任意のアイデアをどのように組み込むか? – daino3
奇妙な空白が必要な場合を除き、私は上記を行い、xml出力に対してxml prettyprint/canonicalizationを行います。ほとんどのXMLを消費するアプリケーションは、空白を気にしません(なぜなら、xmlのlibaryレベルロジックがそれを処理するからです)。より多くの制御エンコーディングが必要な場合、xmlには出力される空白を制御するEncoder.Indentがあります。 –