У меня возникли проблемы при добавлении модульных тестов для Swift проекта шахты, поэтому я создал свежий тест Xcode проект с урезанной версией моего класса:Как настроить модульные тесты в Swift?
class SimpleClass {
let x: String
init(x: String) {
self.x = x
}
convenience init(dict: Dictionary<String, String>) {
self.init(x: dict["x"]!)
}
}
Затем я создал простой тест:
import XCTest
import TestProblem
class TestProblemTests: XCTestCase {
func testExample() {
// This is an example of a functional test case.
XCTAssertEqual(SimpleClass(x: "foo"), SimpleClass(dict: ["x": "foo"]))
}
}
мне пришлось импортировать сам (import TestProblem
) проект, чтобы исправить ошибки неразрешенных идентификаторов для SimpleClass
.
Однако, когда я пытаюсь запустить тесты, я получаю следующее сообщение об ошибке компилятора:
Could not find an overload for 'init' that accepts the supplied arguments
Что я здесь отсутствует? Вызовы init отлично работают за пределами вызова XCTAssertEqual
, даже в тестовом файле.
по наитию, я также пытался:
let x = SimpleClass(x: "foo")
let y = SimpleClass(dict: ["x": "foo"])
XCTAssertEqual(x, y)
Когда я делаю это, я получаю эту ошибку:
Cannot convert the expression's type 'Void' to type 'SimpleClass'
Хм, это исправляет проблему. Интересно, почему нужны явные аннотации. – Bill
Вы правы, как правило, он должен работать без явных аннотаций. Это похоже на ошибку, так что вы можете сообщить об этом яблоку. Xcode находится в бета2, поэтому он еще не идеален. – jaumard
Спасибо за быстрый ответ - я расскажу о проблеме. – Bill