Я пытаюсь протестировать некоторый код RxJava, используя TestSubsriber
.Данные поступают из Room
ORM как Flowable<Task>
.
Так выглядит мой класс DAO прямо сейчас.
@Dao
public interface TaskDao {
@Insert()
long insertTask(TaskEntity task);
@Delete
int deleteTask(TaskEntity task);
@Query("SELECT * FROM task_table WHERE status = :taskStatus ORDER BY created_at DESC")
Flowable<List<TaskEntity>> getAllTasks(String taskStatus);
@Query("SELECT * FROM task_table WHERE id = :taskId")
Flowable<TaskEntity> getTask(String taskId);
@Update()
int updateTask(TaskEntity updatedTask);
@Query("SELECT COUNT(*) FROM task_table")
int rowCount();
}
Я пытаюсь проверить метод getTask()
.Вот точный метод теста, который не работает.
@Test
public void getTask_getSavedTask_returnsTask() {
Long resp = mTaskDao.insertTask(taskEntity);
assertThat(resp, is(1L));
assertThat(mTaskDao.rowCount(), is(1));
Flowable<TaskEntity> response = mTaskDao.getTask(taskEntity.getTaskId());
TestSubscriber<TaskEntity> testSubscriber = new TestSubscriber<>();
response.subscribe(testSubscriber);
testSubscriber.assertNoErrors();
testSubscriber.assertValueCount(1);
}
Этот фрагмент кода не выполняется при методе testSubscriber.assertValueCount(1)
.
Модель сохраняется в БД, поскольку возвращаемое значение из вызова вставки>1. Также увеличивается число строк.
Я попытался запустить тот же самый код из-за пределов тестовой среды (из действия), и там он работает нормально.