GREYActionBlock для возврата определенного свойства элемента не работает

Я следую примеру Swift под заголовком Есть ли способ вернуть определенный элемент из FAQ, чтобы попытаться получить свойство из элемента.

Я скопировал пример непосредственно из FAQ, но после вызова executeAction textValue все еще имеет свое первоначальное значение. Фактически, независимо от того, что я установил для параметра inout в блоке действия, переменная сохраняет свое первоначальное значение после возврата действия.

Что мне не хватает? Вот код, который у меня есть:

func grey_getText(inout text: String) -> GREYActionBlock {
    return GREYActionBlock.actionWithName("get text",
      constraints: grey_respondsToSelector(Selector("text")),
      performBlock: { element, errorOrNil -> Bool in
          text = element.text
          print("in block: \(text)")
          return true
    })
}

и в методе испытаний:

var textValue = ""
let domainField = EarlGrey().selectElementWithMatcher(grey_text("Floor One"))

domainField.assertWithMatcher(grey_sufficientlyVisible())
domainField.performAction(grey_getText(&textValue))

print("outside block: \(textValue)")

печать

in block: Floor One
outside block: 

Я использую XCode версии 7.3.1

2 ответа

Решение

Извлеките код в этом запросе на получение правильной реализации grey_getText. https://github.com/google/EarlGrey/pull/139

Команда EarlGrey знает, что документы устарели, и мы работаем над решением.

func incrementer(inout x: Int) -> () -> () {
  print("in incrementer \(x)")
  func plusOne() {
    print("in plusOne before \(x)")
    x += 1;
    print("in plusOne after \(x)")
  }
  return plusOne
}

var y = 0;
let f = incrementer(&y)
print("before \(y)")
f();
print("after \(y)")

Хотя мы ожидаем, что y будет 1 в конце выполнения, y останется 0. Вот фактический результат:

in incrementer 0
before 0
in plusOne before 0
in plusOne after 1
after 0

Это связано с тем, что параметр in-out является не " call-by-reference", а " call-by-copy-restore". как указывает PR, указанный в bootstraponline.

Другие вопросы по тегам