2010-07-16 218 views
1

我有以下的測試在我的單元測試套件:單元測試失敗 - 爲什麼?

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]); 

而且從構建控制檯輸出爲:Type mismatch -- A unit with no items should return nil when asked for items in basket within a date range. (count=0)

如果count爲0,並且我測試它的等於0,那麼爲什麼會出現類型不匹配?

謝謝!

回答

0

IMO,問題不是計數是0還是不是。什麼是[[newUnit itemsInPlaceWithinDateRangeFrom:[NSDate dateYesterday] through:[NSDate dateTomorrow]] count]的返回類型。也許你的類型不正確(如double),然後當你試圖打印出來時,它看起來是0.因爲它不能比較int和double,它會產生類型不匹配。這只是我的猜測

+0

'itemsWithinBasketFrom:through'函數返回一個'NSSet *'。 'count'應該是NSSet上可用的方法。 – 2010-07-16 15:39:16

+0

你可以試試用STAssertTrue,我會再次查找STAssertEquals – vodkhang 2010-07-16 15:44:32

3

count返回NSUInteger這是unsigned int。您將期望值設置爲0即int。這些類型是不同的。將您的0投入到NSUInteger中,如(NSUInteger)0或使用0U