>

Swift에서 일련의 기능을 테스트하고 있습니다.

복잡한 튜플 형식을 비교해야합니다 (이것은 단일 XCTAssertEqual 여야합니다)  튜플의 모든 구성 유형을 비교하는 것이 아니라 진술입니다.

간단하게하기 위해이 최소 예제에서 알려진 답을 자신과 비교하려고합니다 :

let answer: (question: [String], correctAnswerIndex: [String], givenAnswers: [String], givenAnswerIndex: [String]) = (question:[], correctAnswerIndex: ["0"], givenAnswers: ["0"], givenAnswerIndex: ["0"])
XCTAssertEqual(answer,answer)

아마도 이로 인해 유형 유형이 같지 않다는 오류가 발생합니다

Global function 'XCTAssertEqual(::_:file:line:)' requires that '(question: [String], correctAnswerIndex: [String], givenAnswers: [String], givenAnswerIndex: [String])' conform to 'Equatable'

따라서 테스트에서 이러한 동일성을 만들기 위해 별도의 확장을 원할 것입니다. 가장 가까운 대답은 일반적인 매개 변수와 관련이 있으며 가능한 한 간단하게 만들고 싶습니다 ...

  • 답변 # 1

    Equatable 대신

    , == 를 작성하는 해결 방법이 있습니다  당신의 Answer 를위한 기능  튜플 :

    typealias Answer = (question: [String], correctAnswerIndex: [String], givenAnswers: [String], givenAnswerIndex: [String])
    func ==(answer: Answer, anotherAnswer: Answer) -> Bool {
        // Implement your own equation logic here!
        return answer.question == anotherAnswer.question
            && answer.correctAnswerIndex == anotherAnswer.correctAnswerIndex
        && answer.givenAnswers == anotherAnswer.givenAnswers
        && answer.givenAnswerIndex == anotherAnswer.givenAnswerIndex
    }
    let answer: Answer = (question:[], correctAnswerIndex: ["0"], givenAnswers: ["0"], givenAnswerIndex: ["0"])
    XCTAssertTrue(answer == answer)
    
    

  • 이전 google app engine - gae - @classmethod 내에서 속성 값에 액세스하는 방법
  • 다음 javascript - 내 AppJS에 지속적으로 표시되는 로더 아이콘