我正在嘗試在我的類上測試另一個類上調用類方法的方法。如果重要的話,我打電話的第二類包含在框架內。模擬類方法不被調用
我試圖測試的方法的簡化版本。我只想驗證switch語句通過捕獲和驗證對[DataCapture trackEvent:]的調用來達到我期望的效果。
- (void)beaconValue:(NSInteger)value
{
NSString* elementIdValue;
switch(value)
{
case 1:
elementIdValue = @"One";
break;
case 2:
elementIdValue = @"Two";
break;
case 3:
elementIdValue = @"Three";
break;
}
[DataCapture trackEvent:elementValueId];
}
這裏是我寫的,我希望工作的測試:
- (void)testCaptureData_1
{
id mockDataCapture = OCMClassMock([DataCapture class]);
OCMExpect([mockDataCapture trackEvent:@"One"]);
[[BeaconingService sharedBeaconingService] beaconValue:1];
OCMVerifyAll(mockDataCapture);
[mockDataCapture stopMocking];
}
我總是驗證告訴我,沒有被引用的預期trackEvent方法,即使我改變我的希望[OCMArg任何]。我在做什麼明顯錯誤或是其他地方的問題(即糟糕的項目設置?)
謝謝,我將添加ClassMethod()包裝和雙重檢查。我沒有將我的測試目標添加到我的Podfile中,並將libPods.a鏈接到我的主目標和測試目標,是不是?當我構建這個測試目標時,我以爲我沒有鏈接就出錯了。 –
還是沒有愛。我不僅執行了ClassMethod()封裝,而且還從測試目標中移除了libPod.a,仍然得到'未調用期望的方法'。 –
我不是CocoaPods的專家。如果我記得以前的討論正確,但是,將libPods.a添加到兩個目標是導致許多問題的原因。請記住,這些是靜態庫,將它們添加到兩個目標將意味着相同的代碼(實際的二進制文件)將作爲每個目標中的獨立副本提供。 –