Как получить доступ к значению переменной в тестовом примере URL-адрес метода HTTP

== тесты для ссылочного равенства (независимо от того, являются ли они одним и тем же объектом).

.equals() тесты для равенства значений (независимо от того, являются ли они логически «равными»).

Objects.equals () проверяет наличие null перед вызовом .equals(), поэтому вам не нужно (доступно с JDK7, также доступным в Guava ).

String.contentEquals () сравнивает содержимое String с содержимым любого CharSequence (доступно с Java 1.5).

Следовательно, если вы хотите проверить, имеет ли две строки одно и то же значение, вы, вероятно, захотите использовать Objects.equals().

// These two have the same value
new String("test").equals("test") // --> true 

// ... but they are not the same object
new String("test") == "test" // --> false 

// ... neither are these
new String("test") == new String("test") // --> false 

// ... but these are because literals are interned by 
// the compiler and thus refer to the same object
"test" == "test" // --> true 

// ... string literals are concatenated by the compiler
// and the results are interned.
"test" == "te" + "st" // --> true

// ... but you should really just call Objects.equals()
Objects.equals("test", new String("test")) // --> true
Objects.equals(null, "test") // --> false
Objects.equals(null, null) // --> true

Вы почти всегда хотите использовать Objects.equals(). В редкой ситуации, когда вы знаете, что имеете дело с интернированными строками, вы можете использовать ==.

Из JLS 3.10. 5. Строковые литералы :

Кроме того, строковый литерал всегда ссылается на тот же экземпляр класса String. Это связано с тем, что строковые литералы, или, в более общем смысле, строки, которые являются значениями константных выражений ( §15.28 ), «интернированы», чтобы обмениваться уникальными экземплярами, используя метод String.intern.

. Подобные примеры также можно найти в JLS 3.10.5-1 .

1
задан HKAK 13 July 2018 в 10:57
поделиться

1 ответ

Когда я искал эту ошибку, я обнаружил, что здесь $ {InstituteIdentifier} нам не нужно давать {}. Когда я удаляю {} значение переменной не является feaching в url.

Чтобы использовать значение переменной String, вам не нужны {} и $. На самом деле вам не нужно ничего оценивать. Это уже было сделано благодаря @Value к весне.

Итак, в вашем тесте это верно:

@Value("${InstituteIdentifier}")
private String instituteIdentifier;

, поскольку вам нужно получить значение из загруженных свойств.

И тогда вам просто нужно передать значение переменной instituteIdentifier в отправленном URL, объединив String s:

mockMvc.perform(get("/spacestudy/" + instituteIdentifier +  "/control/searchfilter/loadDepartments")
                            .accept(MediaType.APPLICATION_JSON))
0
ответ дан davidxxx 17 August 2018 в 13:06
поделиться
  • 1
    Большое вам спасибо за его работу. в вашем анде можете обновить URL. Конец символа + внутри двойной кавычки " + instituteIdentifier+" – HKAK 13 July 2018 в 11:19
  • 2
    Добро пожаловать :) Вопрос очень хорошо спрошен и прост для понимания :) Я заметил опечатку, и я обновил ее ранее. Разве это не хорошо? Обратите внимание, что я изменил имя переменной с InstituteIdentifier на instituteIdentifier, чтобы соблюдать соглашения об именах. – davidxxx 13 July 2018 в 11:24
  • 3
    да, я не заметил этого соглашения об именах. Спасибо – HKAK 13 July 2018 в 12:00
Другие вопросы по тегам:

Похожие вопросы: