Soumettre la recherche
Mettre en ligne
RxSwift Testing 같이 시작하기 feat. RxBlocking, RxTest
•
3 j'aime
•
945 vues
Byeongchan Lee
Suivre
RxBlocking과 RxTest를 통해 RxSwift를 테스트하는 법을 간단하게 알아봅시다.
Lire moins
Lire la suite
Logiciels
Signaler
Partager
Signaler
Partager
1 sur 89
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Hello, ReactorKit
Hello, ReactorKit
Suyeol Jeon
ReactorKit으로 단방향 반응형 앱 만들기
ReactorKit으로 단방향 반응형 앱 만들기
Suyeol Jeon
RxSwift to Combine
RxSwift to Combine
Bo-Young Park
20220716_만들면서 느껴보는 POP
20220716_만들면서 느껴보는 POP
Chiwon Song
생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf
ssuserb942d2
DI Container를 이용하여 레거시와 모듈화를 동시에 잡기
DI Container를 이용하여 레거시와 모듈화를 동시에 잡기
정민 안
20231109_OpenID_TechNight_OpenID_Federation.pdf
20231109_OpenID_TechNight_OpenID_Federation.pdf
OpenID Foundation Japan
만화경 앱 개발기(iOS)
만화경 앱 개발기(iOS)
ssuserb942d2
Recommandé
Hello, ReactorKit
Hello, ReactorKit
Suyeol Jeon
ReactorKit으로 단방향 반응형 앱 만들기
ReactorKit으로 단방향 반응형 앱 만들기
Suyeol Jeon
RxSwift to Combine
RxSwift to Combine
Bo-Young Park
20220716_만들면서 느껴보는 POP
20220716_만들면서 느껴보는 POP
Chiwon Song
생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf
ssuserb942d2
DI Container를 이용하여 레거시와 모듈화를 동시에 잡기
DI Container를 이용하여 레거시와 모듈화를 동시에 잡기
정민 안
20231109_OpenID_TechNight_OpenID_Federation.pdf
20231109_OpenID_TechNight_OpenID_Federation.pdf
OpenID Foundation Japan
만화경 앱 개발기(iOS)
만화경 앱 개발기(iOS)
ssuserb942d2
iOSDC 2018 動画をなめらかに動かす技術
iOSDC 2018 動画をなめらかに動かす技術
Yuji Hato
#idcon vol.29 - #fidcon WebAuthn, Next Stage
#idcon vol.29 - #fidcon WebAuthn, Next Stage
Nov Matake
他社製品と比較した際のAuth0のいいところ
他社製品と比較した際のAuth0のいいところ
Satoshi Takayanagi
LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경
LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경
Mintak Son
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰 - 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰 - 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
정민 안
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
ikikko
SwiftのDI方法につい て最近考えてた話
SwiftのDI方法につい て最近考えてた話
Yahoo!デベロッパーネットワーク
Kongの概要と導入事例
Kongの概要と導入事例
briscola-tokyo
muCon 2016: Authentication in Microservice Systems By David Borsos
muCon 2016: Authentication in Microservice Systems By David Borsos
OpenCredo
SwiftUI와 TCA로 GitHub Search앱 만들기
SwiftUI와 TCA로 GitHub Search앱 만들기
규영 허
RPで受け入れる認証器を選択する ~Idance lesson 2~
RPで受け入れる認証器を選択する ~Idance lesson 2~
5 6
DevOps勉強会
DevOps勉強会
Shuntaro Saiba
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
Yuhei Miyazato
Google Mobile Vision과 OpenCV로 card.io를 확장한 범용 카드번호인식 개발
Google Mobile Vision과 OpenCV로 card.io를 확장한 범용 카드번호인식 개발
Hyukjae Jang
Javaで学ぶネットワークプログラミングの基礎
Javaで学ぶネットワークプログラミングの基礎
なべ
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
fastlane을 이용하여 iOS/Mac 앱 관리하기
fastlane을 이용하여 iOS/Mac 앱 관리하기
정민 안
PayPayでのk8s活用事例
PayPayでのk8s活用事例
PayPay Corporation
【入門編】 ”はじめてのKong” APIゲートウェイとService Meshについて学ぼう!
【入門編】 ”はじめてのKong” APIゲートウェイとService Meshについて学ぼう!
Junji Nishihara
Contenu connexe
Tendances
iOSDC 2018 動画をなめらかに動かす技術
iOSDC 2018 動画をなめらかに動かす技術
Yuji Hato
#idcon vol.29 - #fidcon WebAuthn, Next Stage
#idcon vol.29 - #fidcon WebAuthn, Next Stage
Nov Matake
他社製品と比較した際のAuth0のいいところ
他社製品と比較した際のAuth0のいいところ
Satoshi Takayanagi
LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경
LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경
Mintak Son
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰 - 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰 - 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
정민 안
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
ikikko
SwiftのDI方法につい て最近考えてた話
SwiftのDI方法につい て最近考えてた話
Yahoo!デベロッパーネットワーク
Kongの概要と導入事例
Kongの概要と導入事例
briscola-tokyo
muCon 2016: Authentication in Microservice Systems By David Borsos
muCon 2016: Authentication in Microservice Systems By David Borsos
OpenCredo
SwiftUI와 TCA로 GitHub Search앱 만들기
SwiftUI와 TCA로 GitHub Search앱 만들기
규영 허
RPで受け入れる認証器を選択する ~Idance lesson 2~
RPで受け入れる認証器を選択する ~Idance lesson 2~
5 6
DevOps勉強会
DevOps勉強会
Shuntaro Saiba
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
Yuhei Miyazato
Google Mobile Vision과 OpenCV로 card.io를 확장한 범용 카드번호인식 개발
Google Mobile Vision과 OpenCV로 card.io를 확장한 범용 카드번호인식 개발
Hyukjae Jang
Javaで学ぶネットワークプログラミングの基礎
Javaで学ぶネットワークプログラミングの基礎
なべ
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
fastlane을 이용하여 iOS/Mac 앱 관리하기
fastlane을 이용하여 iOS/Mac 앱 관리하기
정민 안
PayPayでのk8s活用事例
PayPayでのk8s活用事例
PayPay Corporation
【入門編】 ”はじめてのKong” APIゲートウェイとService Meshについて学ぼう!
【入門編】 ”はじめてのKong” APIゲートウェイとService Meshについて学ぼう!
Junji Nishihara
Tendances
(20)
iOSDC 2018 動画をなめらかに動かす技術
iOSDC 2018 動画をなめらかに動かす技術
#idcon vol.29 - #fidcon WebAuthn, Next Stage
#idcon vol.29 - #fidcon WebAuthn, Next Stage
他社製品と比較した際のAuth0のいいところ
他社製品と比較した際のAuth0のいいところ
LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경
LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰 - 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰 - 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
SwiftのDI方法につい て最近考えてた話
SwiftのDI方法につい て最近考えてた話
Kongの概要と導入事例
Kongの概要と導入事例
muCon 2016: Authentication in Microservice Systems By David Borsos
muCon 2016: Authentication in Microservice Systems By David Borsos
SwiftUI와 TCA로 GitHub Search앱 만들기
SwiftUI와 TCA로 GitHub Search앱 만들기
RPで受け入れる認証器を選択する ~Idance lesson 2~
RPで受け入れる認証器を選択する ~Idance lesson 2~
DevOps勉強会
DevOps勉強会
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
Google Mobile Vision과 OpenCV로 card.io를 확장한 범용 카드번호인식 개발
Google Mobile Vision과 OpenCV로 card.io를 확장한 범용 카드번호인식 개발
Javaで学ぶネットワークプログラミングの基礎
Javaで学ぶネットワークプログラミングの基礎
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
fastlane을 이용하여 iOS/Mac 앱 관리하기
fastlane을 이용하여 iOS/Mac 앱 관리하기
PayPayでのk8s活用事例
PayPayでのk8s活用事例
【入門編】 ”はじめてのKong” APIゲートウェイとService Meshについて学ぼう!
【入門編】 ”はじめてのKong” APIゲートウェイとService Meshについて学ぼう!
RxSwift Testing 같이 시작하기 feat. RxBlocking, RxTest
1.
뱅크샐러드이병찬 RxTest 같이 시작하기 RxTest,
RxBlocking을 같이 알아보기!
2.
뱅크샐러드이병찬 RxTest 같이 시작하기 RxTest,
RxBlocking을 같이 알아보기!
3.
1. TestCode, ObservableTestCode란? 2.
RxBlocking에 대해 3. RxTest에 대해 4. RxSwift를 테스트해보자! 목차
4.
1. TestCode란?
5.
어떤 동작을 수행
했을 때 1) 원하는 값이 나오는지 검증 2) 연속되어야 하는 동작이 수행되는지 검증 TestCode란?
6.
원하는 값이 나오는지
7.
원하는 값이 나오는지
8.
원하는 값이 나오는지
9.
원하는 값이 나오는지 값이
원하는 형태로 나오는지 검증
10.
연속되어야 하는 동작을
수행하는지
11.
연속되어야 하는 동작을
수행하는지
12.
연속되어야 하는 동작을
수행하는지
13.
연속되어야 하는 동작을
수행하는지
14.
연속되어야 하는 동작을
수행하는지 연속되어야 하는 동작의 수행 검증
15.
그럼 Observable은?
16.
17.
RxTest 새내기 "이뱅샐"
18.
19.
20.
21.
Event를 동기적으로 받을
수는 없을까? subscribe없이 Event를 받을 수는 없을까?
22.
Hot Observable일 때는? reduce도
못하는데…
23.
기대하는 타이밍에 Event가
나오는지 검증은? 버튼 눌렀을 때 Event가 나오는지 검증해야 하잖아?
24.
25.
/* Event를 간단하게
추출할 수 있어야 함 /* 원하는 값이 원하는 타이밍에 나오는지 검증
26.
RxBlocking RxTest 어서와, 테스트는
처음이지?
27.
2. RxBlocking
28.
🍏 🍇 🌶
🌽 🍉
29.
🍏 🍇 🌶
🌽 🍉 ➜ [ 🍏, 🍇, 🌶, 🌽, 🍉 ]
30.
31.
32.
33.
onComplete가 떨어질 때까지 기다린다…
34.
35.
🍏 🍇 🌶
🌽 🍉 ➜ [ 🍏, 🍇, 🌶, 🌽, 🍉 ] onComplete가 꼭 떨어져야 함
36.
.toBlocking(timeout: RxTimeInterval?)
37.
🍏 🍇 🌶
🌽 🍉 [ 🍏, 🍇, 🌶 ] ➜
38.
- ColdObservable의 Event를
검증할 때 사용 - 특정 시간동안 방출된 Observable의 Event도 검증 가능 • HotObservable도 사용 가능 RxBlocking은
39.
3. RxTest
40.
1초 2초 3초
4초 5초 🍏 🍇 🌶 🌽 🍉 ➜ [ (🍏, 1초), (🍇, 2초), (🌶, 3초), (🌽, 4초), (🍉, 5초) ] ➜ 3초에 🌶가 나왔는가?
41.
42.
43.
44.
let buttonTapped =
s.createHotObservable([ .next(1, Void()), .next(3, Void()) ])
45.
구독의 여부와 상관없이 이벤트
발생
46.
구독이 시작되면 정해진 순서대로
이벤트 발생
47.
1초 2초 3초
4초 5초 🍏 🍇 🌶 🌽 🍉 👀 관찰 👀 ➜➜ [ (🍏, 1초), (🍇, 2초), (🌶, 3초), (🌽, 4초), (🍉, 5초) ]
48.
👀 가상의 시간이
모두 흐를 때까지 관찰 👀
49.
👀 가상의 시간이
모두 흐를 때까지 관찰 👀 Observable이 끝나지 않아도 상관X
50.
👀 가상의 시간이
모두 흐를 때까지 관찰 👀 Hot Observable도 테스트 가능!
51.
52.
53.
54.
가상의 시간이 모두
흐를때까지..
55.
56.
- Observable에 시간개념을
넣어줌 • 이를 통해 언제 무엇이 나왔는지 검증 가능 - Observer를 통해 Hot, Cold 모두 검증가능 • 가상의 시간이 다 흐를 때까지 관찰 후 타이밍과 Event 반환 RxTest는?
57.
4. RxSwift를 테스트하자
58.
59.
- 원하는 값이
정상적으로 나오는지 검증 - Response에 상관없이 예상하는 결과가 나오는지 "isLoading" TestCase
60.
61.
62.
63.
64.
65.
66.
67.
✨
68.
69.
- tapped 되었을
때 마다 원하는 값이 정상적으로 나오는지 검증 - Response에 상관없이 예상하는 결과가 나오는지 "loading" TestCase
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
✨ ✨ ✨
80.
- Mocking, 가상의
시간, Observer.. 언제 배우나? - TestCode보다 기능 개발이 더 우선 아니야? RxBlocking, RxTest....
81.
func removeAllData() { /*
구현 */ Implements() }
82.
func removeAllData() { /*
구현 */ Implements() } 만약 삭제에서 누락된 데이터가 있다면?
83.
당연하게 동작할 것
같은 코드의 배신 ➜ Hotfix
84.
TestCode는 당연한 코드가 당연하게
동작하는지 검증
85.
RxSwift의 TestCode는 Observable이 당연하게
방출되는지 검증
86.
“RxSwift & 테스트코드와
함께 금융의 혁신을 만들어갈 전사들을 뱅샐은 기다립니다.”
87.
- RxTest, RxBlocking •
https://www.raywenderlich.com/7408-testing-your-rxswift-code • https://github.com/ReactiveX/RxSwift/blob/master/Documentation/UnitTests.md - Nimble • https://github.com/Quick/Nimble - Stubber • https://github.com/devxoul/Stubber 참고자료
88.
slido.com / #P445
Télécharger maintenant