Фон: Я работаю над автоматизацией приложения календаря, которое содержит UICollectionView со многими ячейками, представляющими временные интервалы.
У меня есть класс CalendarView с классом Login в качестве его суперкласса. Этот класс CalendarView содержит все методы, которые я использую в календаре, так что мои тесты выглядеть примерно такКак я могу повторно использовать переменную, полученную из цикла for, в методе другого метода в том же классе?
func testMakeAppointment() {
CalendarView()
.moveToCorrectSchedule()
.findEmptyCalendarCell()
.tapNewAppointmentCell()
.enterRegAppointmentInfo()
.tapLatestAppointment()
На моем findEmptyCalendarCell()
я использую для цикла, чтобы найти первую доступную ячейку, на мячи по календарю. Метод выглядит следующим образом:
func findEmptyCalendarCell() ->CalendarView {
let partialCellPath = XCUIApplication().collectionViews.childrenMatchingType(.Other)
let start: UInt = 10
let totalAmountOfCells = partialCellPath.count
for i in start...totalAmountOfCells {
if partialCellPath.elementBoundByIndex(i).otherElements["CalendarCell"].exists == true {
if partialCellPath.elementBoundByIndex(i).otherElements["CalendarCell"].hittable == true {
partialCellPath.elementBoundByIndex(i).otherElements["CalendarCell"].tap()
xctc.pauseForSeconds(1)
}
}
}
return CalendarView()
}
На двух следующих методов, я нажимаю ячейку, я нашел и ввести информацию о назначении и создать назначение.
Задача: До этого момента все хорошо. Тем не менее, теперь мне нужно нажать назначение, которое я только что создал, чтобы утверждать, что объект назначения теперь существует в календаре. (Это будет сделано в рамках метода tapLatestAppointment()
.
Если бы я мог каким-то образом повторно использовать переменную i
из за петли в findEmptyCalendarCell()
нажать ту же ячейку я использовал для создания назначения, это было бы здорово. Но, к сожалению, я могу 't похоже, чтобы найти способ сохранить эту переменную для последующего использования.
Может ли кто-нибудь помочь мне найти возможное решение? Я пытался сделать переменной класса типа UInt ?, но так как я возвращаю новый экземпляр из CalendarView() после каждого метода это значение всегда nil
:(
Заранее спасибо
Спасибо Мэтью, но только из любопытства, как я могу это сделать, поэтому я не создаю новые экземпляры CalendarView() и все же сохраняю тесты как чистые, как выше? – Citronex
У меня нет решения для этого, так как я не знаю вашей полной реализации, но если вы просто делаете это для тестов (что-то, что не нажимало на меня в первый раз), то это, наверное, хорошо. –
Как я и ожидал, с использованием глобальной переменной этот путь всегда возвращает nil. Я подозреваю, что это потому, что значение selectedIndex возвращается к нулю, когда я запускаю новый экземпляр CalendarView(). – Citronex