Это продолжение предыдущей статьи
Сценарий 2:
Все мы работали над процессами входа или регистрации, выполняли сетевые вызовы и анализировали ответы. Давайте поговорим о валидаторе.
Примечание: Кстати, 2-й и 3-й пункты Это связаны, я дам вам знать, почему.
Делая запрос на вход в систему, мы сначала проверяем поля, и для этого мы обычно добавляем if else в действие, но это никак не может быть протестировано (написание тестовых случаев). Итак, вот концепция единой ответственности «S» от SOLID. Контроллер не несет ответственности за проверку каких-либо полей. Поэтому мы создадим для этого отдельный класс. И распределять ответственность.
Давайте начнем часть кодирования
protocol ValidatorType{ func isValid() -> Bool } // Class Implementing type class EmailValidator: ValidatorType{ var value: String? init(value: String){ self.value = value } func isValid() -> Bool { // add condition return true } }
Теперь давайте создадим для него модульный тест,
Now in this way any Field, The benefit is that you can create testcase for the function. class MockValidator: ValidatorType{ var value: String? = abc func isValid() -> Bool { guard let value = value else { return false } return value == "abc" } } // Testcase for success Scenario func test_whenMockStringPassed_shouldReturnTrue() { let expectation = self.expectation(description: "Should return True") var expectedValue = "abc"XCTAssertEqual(
validateField(type: MockValidator(value: expectedValue)), true)
expectation.fulfill() }
Это была небольшая демонстрация преимуществ протокола и варианта использования модульного теста. Есть несколько статей о валидаторах, которые вы можете проверить, и я также скоро напишу простую статью для валидатора.
Вы можете попробовать разными способами. Я также работал с сетевыми классами, которые будут в следующей статье.