@autoclosure
Решил познакомиться с test-driven development. И, заодно, разобраться с XCTest Framework. Там много всего интересного, оказывается.
Например, Эпл пишет: Test-driven development is a first-class workflow within Xcode. То есть, в Икскоде четко соблюдается философия TDD, сформулированная Кентом Беком: те же утверждения, сравнения и т. д.
В Свифте для проверки утверждений тестирования используются примерно такие методы:
func XCTAssert(expression: @autoclosure () -> Bool, message: String, ...)
@autoclosure, которое я перевел как автозамыкание, — очень интересная штука. (В ранних бетах Икскоды-6 называлась @auto_closure.) Автозамыкание принимает ноль аргументов, и возвращает что угодно.
Если обычно замыкания в Свифте вызвываются так:
someFunc(doLater: (x: 2, y: 12, z: 85) -> Bool {
// some code
}, lastPart: "06")
То автозамыкания — так:
someFunc(doLater(), lastPart: "0")
Применительно к ассертам в юнит-тестах, соответственно, так:
XCTAssert(colorMatch(), "rgb hex does not work")
Все красиво и ненавязчиво :) Что же нам еще почитать об этом?
Про автозамыкания:
- developer.apple.com/swift/blog;
- Мэттт Томпсон: XCTestCase.
Про юнит-тестирование:
- Эпл-доки;
- Мэттт Томпсон: Unit Testing;
- какой-то интересный сайт: iOSUnitTesting.com;
- и лекции Яндекса, конечно.