2016-10-21 3 views
0

По понятным причинам я не хочу загрязнять свой производственный код тестовым кодом. Я пытаюсь использовать инфраструктуру тестирования uCode. Во время выполнения я хочу заменить один из классов другим, который существует только в моей целевой точке тестирования.XCTest: как мы можем ввести класс во время выполнения

Любая идея, как я могу это достичь?

+0

Взгляните на [SBTUITestTunnel] (https://github.com/Subito-it/SBTUITestTunnel), это может пригодиться. –

+0

В соответствии со своей документацией SBTUITestTunnel имеет компоненты, которые должны быть созданы в приложении, а другое - в тестовом коде. Я бы очень хотел, чтобы у вас не было кода, связанного с тестированием. – user1366265

ответ

0

Вам нужен так называемый пробный макет.

Вы создаете классный класс в тестовом файле, который расширяет класс, который вы хотите высмеять.

class MockHttp extends HttpService { 
    var getWasCalledCount = 0 

    override func get(request: URLRequest) { 
    getWasCalledCount = getWasCalledCount + 1 
    } 
} 

Затем в тесте вы измените оригинальное свойство класса с издеваться (я хотел, чтобы его в методе нАлАдкА)

override func setUp() { 
    var mockHttp = MockHttp() 
    classIWantToInjectWithMock = ClassIWantToInjectWithMock(http: mockHttp) 
} 

Я надеюсь, что это помогает! Хорошего дня!

+1

Это не работает с тестированием пользовательского интерфейса. – user1366265