Как можно использовать XCTAssertNil с дополнительными структурами?
Обновление 23.03.2016 Я только что проверил мой оригинальный пример кода ниже, и все это прекрасно компилируется в XCode 7.3. Похоже, что XCTAssertNil был обновлен по пути, чтобы принять выражение типа() throws -> Any?
Поэтому этот вопрос и ответ могут больше не понадобиться (за исключением некоторого времени с более старыми версиями компилятора.)
Я пишу свои первые модульные тесты в XCode с XCTest. Я не уверен, как можно воспользоваться XCTAssertNil, поскольку он, похоже, компилируется только при использовании определенных типов. Похоже, он будет работать с опциями, сделанными из классов и встроенных примитивов, но не структур. Как можно использовать этот метод?
Для структур компилятор выдает следующую ошибку (предполагая, что SimpleStruct - это имя вашего типа):
'SimpleStruct' is not identical to 'AnyObject'
Вот простой тестовый класс, чтобы проиллюстрировать некоторые типы, которые хорошо компилируются, а другие - нет.
import Cocoa
import XCTest
struct SimpleStruct {
}
class SimpleClass {
}
class Tests: XCTestCase {
func testl() {
var simpleStruct:SimpleStruct? = nil;
var simpleClass:SimpleClass? = nil;
var i:Int? = nil;
var s:String? = nil;
var tuple:(Int,String)? = nil;
XCTAssertNil(simpleStruct); // compile error
XCTAssertNil(simpleClass); // OK
XCTAssertNil(i); // OK
XCTAssertNil(s); // OK
XCTAssertNil(tuple); // compile error
}
}