Вы можете использовать эту пользовательскую библиотеку (написанную с помощью Promise) для выполнения удаленного вызова.
function $http(apiConfig) {
return new Promise(function (resolve, reject) {
var client = new XMLHttpRequest();
client.open(apiConfig.method, apiConfig.url);
client.send();
client.onload = function () {
if (this.status >= 200 && this.status < 300) {
// Performs the function "resolve" when this.status is equal to 2xx.
// Your logic here.
resolve(this.response);
}
else {
// Performs the function "reject" when this.status is different than 2xx.
reject(this.statusText);
}
};
client.onerror = function () {
reject(this.statusText);
};
});
}
Пример простого использования:
$http({
method: 'get',
url: 'google.com'
}).then(function(response) {
console.log(response);
}, function(error) {
console.log(error)
});
JUnit позволяет предоставлять правила через поле тестового класса или метод getter.
То, что вы отметили в Kotlin, является свойством , хотя JUnit не распознает.
Вот возможные способы задания правила JUnit в Kotlin:
Из M13 аннотация процессор поддерживает цели аннотации . Однако, когда вы пишете
@Rule
public val mActivityRule: ActivityTestRule<MainActivity> = ActivityTestRule(javaClass<MainActivity>())
, аннотация будет использовать цель property
по умолчанию (не отображается в Java).
Однако вы можете аннотировать свойство getter, которое также public и, таким образом, удовлетворяет требованиям JUnit для правила getter:
@get:Rule
public val mActivityRule: ActivityTestRule<MainActivity> = ActivityTestRule(javaClass<MainActivity>())
В качестве альтернативы вы можете определить правило с помощью функции вместо свойства (достижение вручную того же результата, что и для @get:Rule
).
Kotlin также позволяет , поскольку бета-кандидат детерминистически компилирует свойства в поля на JVM, и в этом случае применяются аннотации и модификаторы к сгенерированному полю. Это делается с помощью аннотации свойства Kotlin @JvmField
, как , на которую отвечает @jkschneider .
Боковое примечание: обязательно префикс Rule
с символом @
, так как теперь поддерживается только поддерживаемый синтаксис аннотаций и избегать @publicField
, так как он скоро будет сброшен .
С Kotlin 1.0.4:
val mActivityRule: ...
@Rule get
С Kotlin 1.0.0+ это работает:
@Rule @JvmField
val mActivityRule = ActivityTestRule(MainActivity::class.java)
Используйте это:
@get:Rule
var mActivityRule: ActivityTestRule<MainActivity> = ActivityTestRule(MainActivity::class.java)