我正在编写一个班级的单元测试。这个类(比如子类)继承自其他一些类(即父类)。在子类的一种方法中,它使用[super someMethod]调用其父类的方法。我已经部分模拟了子类,并希望存根父类方法。所以当调用[super someMethod]而不是去父类方法时,它会在我的测试类中找到stubbed方法。任何人都可以帮助我吗?
这是我正在编写测试用例的类的公共接口。它继承自设备管理器。
@interface BTDeviceManager : DeviceManager<MGBTDeviceDelegate>
+ (id) sharedInstance;
- (void)startConnection;
@property (nonatomic,weak) id <MGBTDeviceDelegate> deviceDelegate;
@end
设备管理器有一个名为:
的方法- (void) startDiscoveryWithServices:(NSArray *)serviceUUIDs
我正在尝试存根这个从BTDeviceManager调用的方法。
我的测试类是这样的:
@implementation BTDeviceManagerTest
- (void)setUp {
[super setUp];
deviceManager = [[BTDeviceManager alloc]init];
deviceManager.deviceManagerDelegate = self;
deviceManagerMock = OCMPartialMock(deviceManager);
}
- (void)testStartConnection
{
NSArray *testShaverServiceUUIDs = @[@"C222"];
//This is how i am trying to stub the superclass method
OCMStub([deviceManagerMock startDiscoveryWithServices:testShaverServiceUUIDs]).andCall(self, @selector(handleStartDiscoveryWithServices:));
[deviceManagerMock startConnection];
}
@end
答案 0 :(得分:0)
所以你要做的就是模拟父类并在那里存根。所以,在你的情况下,你是在嘲笑DeviceManager
,那么当孩子进行那次调用时,它会转而去模拟。