                 }
                 #endif
 
+                #if canImport(Combine)
+                if #available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) {
+                    then("receive updates with publisher") {
+                        self.keyStore.testValue = DefaultsKey<Serializable>("test", defaultValue: self.defaultValue)
+
+                        var update: Serializable?
+                        let cancellable = defaults.publisher(for: \.testValue)
+                            .sink { value in
+                                update = value
+                            }
+
+                        defaults.testValue = self.customValue
+
+                        expect(update).toEventually(equal(self.customValue))
+                    }
+                }
+                #endif
+
                 then("receives initial update") {
                     let key = DefaultsKey<Serializable>("test", defaultValue: self.defaultValue)
 

                }
                #endif

            }

            when("non-optional key") {

                }
                #endif

                #if canImport(Combine)
                if #available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) {
                    then("receive updates with publisher") {
                        self.keyStore.testOptionalValue = DefaultsKey<Serializable?>("test", defaultValue: self.defaultValue)

                        var update: Serializable?
                        let cancellable = defaults.publisher(for: \.testOptionalValue)
                            .sink { value in
                                update = value
                            }

                        defaults.testOptionalValue = self.customValue

                        expect(update).toEventually(equal(self.customValue))
                    }
                }
                #endif

                then("receives initial update") {
                    let key = DefaultsKey<Serializable?>("test", defaultValue: self.defaultValue)

