2011-08-07 52 views
0

產品構建成功,但測試失敗。我如何通過下面的STAssertEquals報告的類型不匹配失敗?Xcode:Objective-C:類型不匹配

// TransactionSpec.m 

#import "Transaction.h" 

@interface TransactionSpec : SenTestCase 
@end 

@implementation TransactionSpec 

#pragma mark Properties 

- (void)testProperties { 
    Transaction *transaction = [[Transaction alloc] init]; 
    transaction.type = TransactionTypePay; 

    STAssertNotNil(transaction, @"transaction exists"); 
    STAssertEquals(transaction.type, TransactionTypePay, @"type property works"); // Type mismatch 
} 

@end 

// Transaction.h 

typedef enum { 
    TransactionTypePay, 
    TransactionTypeCharge 
} TransactionType; 

@interface Transaction : NSObject 

@property (nonatomic) TransactionType *type; 

@end 

// Transaction.m 

#import "Transaction.h" 

@implementation Transaction 

@synthesize type; 

@end 

回答

2

type屬性被聲明爲指針來枚舉,這可能不應該這樣

+0

應該如何聲明?我只是跟着[''](https://github.com/enormego/UIKit/blob/af0df999735b29259b2a64342d616bc04bce54de/UITableView.h#L15-18)。 – ma11hew28

+0

哦!得到它了!謝謝! – ma11hew28

1

鑄造transaction.typeTransactionType修復該問題:

STAssertEquals((TransactionType)transaction.type, TransactionTypePay, @"type property works"); 

可是,我爲什麼要必須這樣做,因爲我聲明:

@property (nonatomic) TransactionType *type; 
+0

糟糕。 'type'前取出星號(*)。那麼,你不必施放它。 – ma11hew28

3

您的type物業是指針TransactionType(這可能不是預期的),而TransactionTypePay是一個實際的TransactionType

+0

甜!它現在通過。謝謝。愚蠢的錯誤。 :) – ma11hew28