我想在涉及 CLBeacon 的 View Controller 上运行一些测试。不幸的是,虽然 CLBeacons 本身不是私有(private)类,但它们的所有必要属性都是只读的,没有任何写访问器。
这些方法的编写方式应有助于最大限度地提高可测试性,但没有生成 CLBeacon 的能力,我该如何测试我的 View Controller 的相关逻辑?
编辑:
为了解释我的目的范围,我有时会在应用程序中遇到一些奇怪的行为。我想通过测试各种场景并确认我的代码中的各种其他相关组件正常工作,来尝试确认奇怪行为的来源是在代码的特定区域。 (例如,我可以测试我的数据处理是否正常工作,因此我知道是动画/布局代码出现了问题)。
最佳答案
我是通过使用 OCMockito 完成的使用 XCTest。
CLBeacon *mockBeacon = mock([CLBeacon class]);
然后我可以使用它来调用作为 CoreLocation 委托(delegate)的类的委托(delegate)方法。测试可能如下所示:
- (void)testDidRangeOnABeacon
{
MyLocationDelegate *myDelegate = [[MyLocationDelegate alloc] init];
CLLocationManager *mockManager = mock([CLLocationManager class]);
CLBeacon *mockBeacon = mock([CLBeacon class]);
CLBeaconRegion *mockRegion = mock([CLBeaconRegion class]);
[myDelegate locationManager:mockManager
didRangeBeacons:@[mockBeacon]
inRegion:mockRegion];
// XCTAsserts...
XCTAssert([myDelegate.checkSomethingAboutRanging]);
}
关于ios - 如何对涉及 CLBeacon 的逻辑进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23575301/