Создать тестовое правило:
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.read.ListAppender;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.stream.Collectors;
public class LoggerRule implements TestRule {
private final ListAppender<ILoggingEvent> listAppender = new ListAppender<>();
private final Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
@Override
public Statement apply(Statement base, Description description) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
setup();
base.evaluate();
teardown();
}
};
}
private void setup() {
logger.addAppender(listAppender);
listAppender.start();
}
private void teardown() {
listAppender.stop();
listAppender.list.clear();
logger.detachAppender(listAppender);
}
public List<String> getMessages() {
return listAppender.list.stream().map(e -> e.getMessage()).collect(Collectors.toList());
}
public List<String> getFormattedMessages() {
return listAppender.list.stream().map(e -> e.getFormattedMessage()).collect(Collectors.toList());
}
}
Затем использовать его:
@Rule
public final LoggerRule loggerRule = new LoggerRule();
@Test
public void yourTest() {
// ...
assertThat(loggerRule.getFormattedMessages().size()).isEqualTo(2);
}
Вот урок по угловым наблюдаемым из угловой документации.
Основное использование и термины
В качестве издателя вы создаете экземпляр Observable, который определяет функцию подписчика. Это функция, которая выполняется, когда потребитель вызывает метод subscribe (). Функция подписчика определяет, как получать или генерировать значения или сообщения для публикации.
Чтобы выполнить созданную вами наблюдаемую и начать получать уведомления, вы вызываете ее метод subscribe () , передавая наблюдателя. Это объект JavaScript, который определяет обработчики получаемых вами уведомлений. Вызов подписки () возвращает объект Subscription, у которого есть метод unsubscribe (), который вызывается для прекращения получения уведомлений.