2016-10-21 7 views
0

明白な理由から、私はテストコードで私の生産コードを汚染したくありません。私はXCodeのUIテストフレームワークを使用しようとしています。実行時には、クラスの1つを、テスト対象にのみ存在する別のクラスに置き換えたいと思います。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 
    } 
} 

(私はsetUpメソッドでそれに対するのが好き)

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

私はこれが役に立てば幸い!良い一日を!

+1

これはUIテストでは機能しません。 – user1366265

関連する問題