В моем тестовом файле я пытаюсь сравнить фактическую ошибку, обнаруженную с ожидаемой ошибкой. Однако это сравнение оценивается как ложное, и я не уверен, почему. Это происходит даже тогда, когда я создаю две идентичные ошибки и сравниваю их.Сравнение ошибок в Go
Фрагмент кода:
func TestCompareErrors(t *testing.T) {
if fmt.Errorf("Test Error") != fmt.Errorf("Test Error") {
t.Errorf("Test failed")
}
}
Это приводит к «Тест не удалось»
Хорошо, но что, если сообщение в вашей ошибки имеет динамическое содержимое (например, «Неожиданный вход: [что-то]» или в том, что плохая практика в данном случае – edwardmp
@edwardmp: да, наличие динамического сообщения в ошибке, как правило, плохое, поскольку вы теряете способность сравнивать значения. Вы можете использовать такие методы, как ['net.OptError'] (https://golang.org/pkg/net/#OpError) (который удовлетворяет ['net.Error'] (https://golang.org/pkg/net/#Error) и' error'), где вы прикрепляете дополнительную информацию к ошибке, и вы проверяете тип ошибки с помощью тип утверждения и его методы. – JimB
Правильно, это хорошее решение. – edwardmp