Редактировать : Я расширил этот ответ в блоге, How to Make Specialized Test Assertions in Swift
Недостатком использования
XCTAssertTrue(region == (0.0, 200.0))
является неадекватной отчетности, что дает при неудаче:
XCTAssertTrue failed -
Теперь вы должны отследить, что фактические значения, чтобы понять, что пошло не так.
Но вы можете добавить диагностическую информацию к утверждению, как это:
XCTAssertTrue(region == (0.0, 200.0), "was \(region)")
Например:
XCTAssertTrue failed - was (1.0, 2.0)
Если вы планируете иметь несколько тестов, которые сравнивают этот кортеж, я бы не хотел повторять это повсюду. Вместо этого можно создать пользовательское утверждение:
private func assertRegionsEqual(actual: (_: Double, _: Double), expected: (_: Double, _: Double), file: StaticString = #file, line: UInt = #line) {
if actual != expected {
XCTFail("Expected \(expected) but was \(actual)", file: file, line: line)
}
}
Теперь тест утверждение
assertRegionsEqual(actual: region, expected: (0.0, 200.0))
В случае отказа, это дает сообщение как
failed - Expected (0.0, 200.0) but was (1.0, 2.0)
Я попытался 'пусть EqL = область == (0.0, 200.0) ', но он все еще дает мне ошибку, которая' == 'не может быть применена к кортежам. Я выполняю Swift 2.1.1, если это имеет значение. – GWRodriguez
Я не уверен, когда они добавили его, но это относительно новое. Вам нужно будет использовать более позднюю версию Swift или проверить элементы отдельно. Я думаю, вы могли бы также написать свой собственный пользовательский оператор равенства. –
В Swift 2.2 были добавлены операторы сравнения Tuple. Так как вы на 2.1, вы можете скопировать и изменить реализацию == здесь: https://github.com/apple/swift-evolution/blob/master/proposals/0015-tuple-comparison-operators.md –