2010-07-16 4 views
1

J'ai le test suivant dans ma suite de test unitaire:Échec du test unitaire - Pourquoi?

STAssertEquals(0, [[newUnit itemsWithinBasketFrom:[NSDate dateYesterday] through:[NSDate dateTomorrow]] count], 
       @"A unit with no items should return 0 when asked for items in place within a date range. (count=%i)", 
       [[newUnit itemsWithinBasketFrom:[NSDate dateYesterday] through:[NSDate dateTomorrow]] count]); 

Et la sortie de la console de construction est: Type mismatch -- A unit with no items should return nil when asked for items in basket within a date range. (count=0).

Si compte est 0, et je teste son égalité contre 0, pourquoi puis-je obtenir une incompatibilité de type?

Merci!

Répondre

0

IMO, le problème n'est pas le nombre est 0 ou non. Quel est le type renvoyé de [[newUnit itemsInPlaceWithinDateRangeFrom:[NSDate dateYesterday] through:[NSDate dateTomorrow]] count]. Peut-être que votre type n'est pas correct (comme double), alors quand vous essayez de l'imprimer, il semble être 0. Et parce qu'il ne peut pas comparer int et double, il génère une incompatibilité de type. C'est juste ma conjecture

+0

La fonction 'itemsWithinBasketFrom: through' renvoie un' NSSet * '. 'count' devrait être une méthode disponible sur un NSSet. –

+0

Pouvez-vous essayer avec STAssertTrue, je vais chercher à nouveau le STAssertEquals – vodkhang

3

count renvoie NSUInteger qui est unsigned int. Vous définissez la valeur attendue comme 0 qui est int. Ces types sont différents. Cast votre 0 à NSUInteger comme (NSUInteger)0 ou utilisez 0U.