Я создаю тесты пользовательского интерфейса. Чтобы не взаимодействовать с реальным сервером, я использую MockWebServer. Моя цель — эмулировать различные ответы сервера и посмотреть, как на них отреагирует программа в целом. На данный момент я не понимаю, как открывать экраны, требующие авторизации. Конечно, я могу написать код, который будет входить на экран авторизации, а потом переходить в нужное окно. Но это требует дополнительного времени на выполнение теста, а этого хотелось бы избежать. Я бы не хотел издеваться над классами, потому что мне нужно проверить рабочую версию приложения. Как я могу это сделать?
Для DI я использую Кинжал-2. Вот код компонента:
@Singleton
@Component(modules = {
AvatarsModule.class,
EncryptionModule.class,
ApiModule.class,
WalletsModule.class,
GeneralModule.class,
InteractorsModule.class,
PushNotificationsModule.class,
AppModule.class
})
public interface AppComponent {
@Component.Builder
interface Builder {
@BindsInstance
Builder context(Context context);
AppComponent build();
}
void inject(App app);
}
Вот код класса, в котором хранится состояние авторизации:
public class ApiWrapper {
private Api api;
private KeyPair keyPair;
private Account account;
...
public Flowable<Authorization> authorize(KeyPair tempKeyPair) {
return api
.authorize(tempKeyPair.getPublicKeyString().toLowerCase())
.subscribeOn(Schedulers.io())
.doOnNext((authorization -> {
this.account = authorization.getAccount();
this.keyPair = tempKeyPair;
}));
}
...
}