Как исправить ошибочные утверждения на необработанных строковых литералах - PullRequest
0 голосов
/ 08 января 2019

Я пишу юнит-тесты для успокоительного API и хочу убедиться, что получаю ожидаемый ответ. Как избавиться от "\ n" в конце ожидаемого строкового литерала?

Я использую пакет свидетельства stetchr. Я пытался использовать строки TrimSuffix, функции TrimRight, но тщетно.

func TestGetConfig(t *testing.T) {

    testServer := initTestServer(t)

    req, err := http.NewRequest("GET", "/api/config", nil)
    if err != nil {
    t.Fatal(err)
    }

    rr := httptest.NewRecorder()
    handler := http.HandlerFunc(testServer.getConfig)
    handler.ServeHTTP(rr, req)

    //Check the status code is what we expect
    if status := rr.Code; status != http.StatusOK {
    t.Errorf("handler returned wrong status code: got %v 
want %v", status, http.StatusOK)
    }


    //Check the response body is what we expect.

 expected := `{"domain":"","ip":"","redirect_key":"mj","redirect_url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ","verification_key":"yp","verification_token":"5a62"}`

    expected = strings.TrimSuffix(expected, "\n")
    assert.Equal(t, rr.Body.String(), expected)

}

Я ожидаю, что тесты пройдут, но вместо этого он не пройдёт и выдаст это в качестве вывода.

Error Trace:    config_test.go:94
                    Error:          Not equal:
                                    expected: "{\"domain\":\"\",\"ip\":\"\",\"redirect_key\":\"mj\",\"redirect_url\":\"https://www.youtube.com/watch?v=dQw4w9WgXcQ\",\"verification_key\":\"yp\",\"verification_token\":\"5a62\"}\n"
                                    actual  : "{\"domain\":\"\",\"ip\":\"\",\"redirect_key\":\"mj\",\"redirect_url\":\"https://www.youtube.com/watch?v=dQw4w9WgXcQ\",\"verification_key\":\"yp\",\"verification_token\":\"5a62\"}"

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Вы обрезаете несуществующий символ "\n" из строки expected вместо фактического тела ответа.

Но более простой способ - просто включить "\n" в строку expected. Таким образом, ожидаемая строка будет фактически тем, что вы ожидаете.

0 голосов
/ 08 января 2019

Порядок параметров неправильный.

Это

assert.Equal(t, rr.Body.String(), expected)

Это должно быть

assert.Equal(t, expected, rr.Body.String())

См. Документ о равных методах

Вы обрезаете неправильное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...