XCTAssertEquals с двумя предсказывает в Swift
Я делаю упражнение.упражнения по программированию io и тесты, которые я должен выполнить на своем коде, имеют цель сравнить друг с другом. Исходный код упражнения можно найти здесь https://github.com/exercism/xswift/tree/master/word-count
'[S : T]' does not have a member named 'bridgeToObjectiveC' что очень понятно, если они его удалили.без метода, использующего только параметры в вызове AssertEquals, я получаю '[S : T]' does not conform to protocol 'Equatable'
. Разве два Дикта не сопоставимы в Swift? Как бы я их сравнил?
3 ответов
вы можете проверить равенство словарей, пока значения Equatable
. Изменить XCTAssertEqualDictionaries
чтобы включить общее ограничение:
func XCTAssertEqualDictionaries<S, T: Equatable>(first: [S:T], _ second: [S:T]) {
XCTAssert(first == second)
}
попробовать
XCTAssertEqual(swiftDict as NSObject, objCDict as NSObject)
заставляет компилятор просто расслабиться и вызвать isEqual:
метод на обоих.
нет, словари Swift напрямую не сопоставимы. Для целей модульного тестирования вы можете либо выполнить ручные сравнения их размеров и парные сравнения элементов, либо вы можете сделать простую вещь и создать NSDictionary
из них и сравнить их таким образом.