Как выполнить модульное тестирование даты в Swift - PullRequest
0 голосов
/ 09 мая 2020

Если у меня есть такая структура ArticleItem:

public struct ArticleItem: Equatable {
    public let id: UUID
    public let description: String?
    public let location: String?
    public let thumbnailURL: URL
    public let created: Date

    public init(id: UUID, description: String?, location: String?, thumbnailURL: URL, created: Date) {
        self.id = id
        self.description = description
        self.location = location
        self.thumbnailURL = thumbnailURL
        self.created = created
    }

}

Но из бэк-энда мы получим такую ​​информацию:

{
    "id": "a UUID",
    "description": "a description",
    "location": "a location",
    "image": "https://a-image.url",
    "created_date": "2020-05-09",
}

Как я могу проверить правильность даты?

В тесте у меня что-то вроде этого:

 func test_load_deliversItemsOn200HTTPResponseWithJSONItems(){
         let (sut, client) = makeSUT()

        let item1 = ArticleItem(id: UUID(), description: nil, location: nil, thumbnailURL: URL(string: "http://a-url.com/")!, created: Date())

        let item1JSON = [
            "id": item1.id.uuidString,
            "image": item1.imageURL.absoluteString,
            "created_date": ??? // what should be here
            ]

        let items = [
            "items": [item1JSON]
        ]

        expect(sut: sut, toCompleteWithResult: .success([item1])) {
            let itemsJSON = try! JSONSerialization.data(withJSONObject: items)
            client.complete(withStatusCode: 200, data: itemsJSON)
        }

     }

Я слышал об использовании iso8601 при декодировании, но все еще не знаю, как это сделать.

Помогите, пожалуйста. Спасибо

...