Я тестирую XML-маршалинг с дачей показаний и используя strings.Contains
, чтобы проверить, действительно ли строки, которые я ожидаю включить в XML, есть.Пользовательский вывод testify для проверки на отсутствие ошибок xml/string
Тем не менее, я хочу разделить фактический и желаемый 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, чем единственный в тесте, так как вы можете себе представить, что если заявление будет брутто. Любые идеи по очистке, которые более масштабируемы?
Thanks Matt. Но мы хотим протестировать фактический формат XML, потому что он потребляется третьей стороной, которая специфицирует XML-формат (мы должны перепрыгнуть через некоторые обручи). Любые идеи, как включить это? – daino3
Если есть какие-то странные требования к пробелам, я бы сделал выше, а затем сделал xml prettyprint/canonicalization на выходе xml. Большинство приложений, потребляющих xml, не заботятся о пробелах (так как правило xml libary level обычно обрабатывает это). Если вам нужно больше управляющего кодирования/xml, Encoder.Indent управляет пробелом, который выводится. –