如何使用MVVM架构编写核心位置并执行单元测试?

问题描述 投票:-2回答:1

我想开发一个应用程序来获取设备位置并按区域搜索。我对MVVM架构有基本的了解,但到目前为止我找不到将核心位置逻辑分离到视图模型的方法。我也想写相同的样本单元测试用例。

ios swift iphone unit-testing core-location
1个回答
0
投票

您可以创建一个定义所有方法的LocationService协议(例如fetchCurrentPosition)。然后创建一个符合该协议的具体类,它实现了apple CoreLocation服务;例如,视图模型将使用此类,它将在初始化程序中注入。想想像:

class MyViewModel {

    let locationService: LocationService

    init(locationService: LocationService = LocationServiceImpl()) {
        self.locationService = locationService
    }

}

LocationServiceImpl是符合LocationService的类,实际上使用苹果CoreLocation;通过这种方式,您可以稍后通过创建符合LocationServiceMockLocationService类来模拟您的位置服务的每个功能;在单元测试中,您将使用模拟服务创建视图模型。

© www.soinside.com 2019 - 2024. All rights reserved.