Xcode: Objective-C: несоответствие типов - PullRequest
0 голосов
/ 08 августа 2011

Сборка продукта выполнена успешно, но тест не пройден.Как передать ошибку несоответствия типов, указанную в строке с STAssertEquals ниже?

// 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

Ответы [ 3 ]

3 голосов
/ 08 августа 2011

Ваше свойство type является указателем на TransactionType (что, вероятно, не предназначено), в то время как TransactionTypePay является действительным TransactionType.

2 голосов
/ 08 августа 2011

Ваше свойство type объявлено как указатель на перечисление, что, вероятно, не должно быть так

1 голос
/ 08 августа 2011

Кастинг transaction.type на TransactionType устраняет проблему:

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

Но зачем мне это делать, поскольку я заявляю:

@property (nonatomic) TransactionType *type;
...