Save 37% off PRO during our Black Friday Sale! »

Mockoloを使ってみよう!

 Mockoloを使ってみよう!

1229baba249e3f95e69ce948fc9ebae6?s=128

ichikawa888

March 25, 2021
Tweet

Transcript

  1. Mockoloを使ってみよう!

  2. ・市川愛実 (イチカワ マナミ) ・メドピア株式会社 ・iOSエンジニア 自己紹介 kakari for Clinic

  3. ・市川愛実 (イチカワ マナミ) ・メドピア株式会社 ・iOSエンジニア 自己紹介 kakari for Clinic

  4. ・市川愛実 (イチカワ マナミ) ・メドピア株式会社 ・iOSエンジニア 自己紹介 kakari for Clinic かりんちゃん

  5. ・市川愛実 (イチカワ マナミ) ・メドピア株式会社 ・iOSエンジニア 自己紹介 kakari for Clinic かりんちゃん

    くりんちゃん
  6. 本題

  7. Mockoloとは ・Uberが開発したモックを生成するためのツール ・Unit Test実装時に活躍 ・導入はMintを使用 uber/mockolo@1.2.7 Mintfile Github: https://github.com/uber/mockolo

  8. /// @mockable protocol TutorialPresenterProtocol: PresenterProtocol { func tapLoginButton() } アノテーションをつける

    モックを作りたいProtocolにアノテーションをつける
  9. /// @mockable protocol TutorialPresenterProtocol: PresenterProtocol { func tapLoginButton() } アノテーションをつける

    モックを作りたいProtocolにアノテーションをつける
  10. $ mint run mockolo mockolo --sourcedirs kakari_clinic/Modules/[ディレクトリ名] --destination kakari_clinicTests/Modules/[ディレクトリ名]/[ファイル名]Mocks.swift -i

    kakari_clinic モックを作成
  11. $ mint run mockolo mockolo --sourcedirs kakari_clinic/Modules/[ディレクトリ名] --destination kakari_clinicTests/Modules/[ディレクトリ名]/[ファイル名]Mocks.swift -i

    kakari_clinic モックを作成 @mockable アノテーションを定義している protocolのパスを指定
  12. $ mint run mockolo mockolo --sourcedirs kakari_clinic/Modules/[ディレクトリ名] --destination kakari_clinicTests/Modules/[ディレクトリ名]/[ファイル名]Mocks.swift -i

    kakari_clinic モックを作成 モックの出力先のパス
  13. $ mint run mockolo mockolo --sourcedirs kakari_clinic/Modules/[ディレクトリ名] --destination kakari_clinicTests/Modules/[ディレクトリ名]/[ファイル名]Mocks.swift -i

    kakari_clinic lane :generate_mock do |options| name = options[:name] sh("mint run mockolo mockolo --sourcedirs ../kakari_clinic/Modules/#{name} --destination ../kakari_clinicTests/Modules/#{name}/#{name}Mocks.swift -i kakari_clinic") end fastlaneでまとめる モックを作成
  14. $ mint run mockolo mockolo --sourcedirs kakari_clinic/Modules/[ディレクトリ名] --destination kakari_clinicTests/Modules/[ディレクトリ名]/[ファイル名]Mocks.swift -i

    kakari_clinic lane :generate_mock do |options| name = options[:name] sh("mint run mockolo mockolo --sourcedirs ../kakari_clinic/Modules/#{name} --destination ../kakari_clinicTests/Modules/#{name}/#{name}Mocks.swift -i kakari_clinic") end $ bundle exec fastlane generate_mock name:[ ファイル名] モックを作成
  15. モックを確認

  16. import UIKit @testable import kakari_clinic class TutorialPresenterProtocolMock: TutorialPresenterProtocol { init()

    { } private(set) var tapLoginButtonCallCount = 0 var tapLoginButtonHandler: (() -> ())? func tapLoginButton() { tapLoginButtonCallCount += 1 if let tapLoginButtonHandler = tapLoginButtonHandler { tapLoginButtonHandler() } } モックを確認
  17. まとめ Mockoloを使うことで、Unit Testをより効 率的に実装することができました。

  18. まとめ ご清聴ありがとうありがとうございました!