Skip to content

Commit

Permalink
Add missing eraseToAnyScheduler
Browse files Browse the repository at this point in the history
  • Loading branch information
kalupas226 committed May 11, 2024
1 parent 4a56069 commit c18ffce
Show file tree
Hide file tree
Showing 5 changed files with 5 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public struct RepositoryList {
.debounce(
id: CancelID.response,
for: .seconds(0.3),
scheduler: DispatchQueue.main
scheduler: DispatchQueue.main.eraseToAnyScheduler()
)
case .queryChangeDebounced:
guard !state.query.isEmpty else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public struct RepositoryList {
.debounce(
id: CancelID.response,
for: .seconds(0.3),
scheduler: DispatchQueue.main
scheduler: DispatchQueue.main.eraseToAnyScheduler()
)
case .queryChangeDebounced:
guard !state.query.isEmpty else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public struct RepositoryList {
.debounce(
id: CancelID.response,
for: .seconds(0.3),
scheduler: DispatchQueue.main
scheduler: DispatchQueue.main.eraseToAnyScheduler()
)
case .queryChangeDebounced:
guard !state.query.isEmpty else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public struct RepositoryList {
.debounce(
id: CancelID.response,
for: .seconds(0.3),
scheduler: DispatchQueue.main
scheduler: DispatchQueue.main.eraseToAnyScheduler()
)
case .queryChangeDebounced:
guard !state.query.isEmpty else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@
仮にこのまま API 通信のレスポンスを受け取るテストコードを書いたとしても、テストは失敗してしまいます。
原因は、0.3 秒経過しないと API 通信が発火しないコードとなっているためです。
この問題を解決するためには、元の実装を少し修正する必要があります。
現在は、`DispatchQueue.main` を指定して 0.3 秒の `debounce` を表現していますが、`DispatchQueue.main` を直接指定してしまっているために、テストでこの依存関係を制御できない状態となっています。
現在は、`DispatchQueue.main.eraseToAnyScheduler` を指定して 0.3 秒の `debounce` を表現していますが、`DispatchQueue.main.eraseToAnyScheduler` を直接指定してしまっているために、テストでこの依存関係を制御できない状態となっています。
swift-dependencies には、このために利用できる `@Dependency(\.mainQueue)` が用意されているため、これを利用するように変更しましょう。

@Code(name: "RepositoryListView.swift", file: 05-02-code-0003.swift, previousFile: 05-02-code-0003-previous.swift)
Expand Down

0 comments on commit c18ffce

Please sign in to comment.