diff --git a/Sources/Dependencies/DependencyValues.swift b/Sources/Dependencies/DependencyValues.swift index b6f2390c..2d7421d2 100644 --- a/Sources/Dependencies/DependencyValues.swift +++ b/Sources/Dependencies/DependencyValues.swift @@ -477,7 +477,12 @@ public final class CachedValues: @unchecked Sendable { return withIssueContext(fileID: fileID, filePath: filePath, line: line, column: column) { let cacheKey = CacheKey(id: TypeIdentifier(key), context: context) #if DEBUG - if context == .live, !DependencyValues.isSetting, !(key is any DependencyKey.Type) { + if + context == .live, + !DependencyValues.isSetting, + !(cached[cacheKey] != nil && cached[cacheKey]?.preparationID != nil), + !(key is any DependencyKey.Type) + { reportIssue( { var dependencyDescription = "" diff --git a/Tests/DependenciesTests/DependencyValuesTests.swift b/Tests/DependenciesTests/DependencyValuesTests.swift index 0329fc65..7f3fcd91 100644 --- a/Tests/DependenciesTests/DependencyValuesTests.swift +++ b/Tests/DependenciesTests/DependencyValuesTests.swift @@ -736,6 +736,18 @@ final class DependencyValuesTests: XCTestCase { XCTAssertEqual(now, Date(timeIntervalSinceReferenceDate: 0)) } + func testPrepareDependencies_setsDependency_LiveContext() { + withDependencies { + $0.context = .live + } operation: { + prepareDependencies { + $0[ClientWithEndpoint.self] = ClientWithEndpoint(get: { 1729 }) + } + @Dependency(ClientWithEndpoint.self) var client + XCTAssertEqual(client.get(), 1729) + } + } + #if DEBUG && !os(Linux) && !os(WASI) && !os(Windows) func testPrepareDependencies_MultiplePreparesWithNoAccessBetween() { prepareDependencies {