Tests et Delegate
iLandes
Membre
Bonjour à tous,
J'affine mes connaissances dans les classes XCTests. J'ai pas mal avancé mais il y a un truc que je ne vois pas du tout comment faire.
J'ai une classe qui adopte un protocole et un sytème de déléguation. Je voudrais faire des XCtest pour vérifier que les func du délégate sont bien appelées dans les bon cas :[
Voici le genre de classe que je voudrais tester
protocol PersonDelegate: class {
func changeEmail(email: String)
func canNotChangeEmail(invalidString: String)
}
class Person {
// MARK: - Vars
var name: String
var email: String
weak var delegate: PersonDelegate?
func tryToChangeEmailWith (s: String) {
// bla bla bla
// C'est un bon email, j'averti le délégué
self.delegate?.changeEmail(s)
// bla bla bla
// Ce n'est pas un email valide, j'averti le délégué
self.delegate?.canNotChangeEmail (s)
}
}
J'ai essayé de résumé ma classe, mais si ce n'est pas clair n'hésitez pas à me demander des explications...
Dans ma class test je voudrais tester que lorsque j'envoie "name@domain.com" le délégué est bien appelé et quand j'envois "nimporteQuoiCommeAdresseEmail" le délégué canNotChangeEmail est bien appelé.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
J'ai trouvé cela :
http://www.mokacoding.com/blog/testing-delegates-in-swift-with-xctest/
Mais je ne comprends pas où et comment déclarer la classe SpyDelegate conforme au delegate
Ajoute une XCTExpectation en propriété pour chaque méthode déléguée.
Dans la méthode déléguée, appelle simplement expectation.fullfill().
Ceci permet de vérifier que la méthode déléguée a bien été appelée.
Je ne vois pas un grand intérêt à déclarer une classe SpyDelegate. (ça allège éventuellement, la classe de test, mais bon).
Merci pour votre aide,
Je reviendrais la dessus. Finalement je me suis passé du protocol de délégation en utilisant des func avec completion(success: Bool).