diff --git a/src/csharp/Grpc.Core.Tests/CallOptionsTest.cs b/src/csharp/Grpc.Core.Tests/CallOptionsTest.cs
index a3a613be746adb990c7758a0006df364d06a5bb8..99a2d47e6e904f165ec658c4177654bee224a91a 100644
--- a/src/csharp/Grpc.Core.Tests/CallOptionsTest.cs
+++ b/src/csharp/Grpc.Core.Tests/CallOptionsTest.cs
@@ -54,10 +54,20 @@ namespace Grpc.Core.Tests
             var deadline = DateTime.UtcNow;
             Assert.AreEqual(deadline, options.WithDeadline(deadline).Deadline.Value);
 
-            var token = new CancellationTokenSource().Token;
-            Assert.AreEqual(token, options.WithCancellationToken(token).CancellationToken);
+            var cancellationToken = new CancellationTokenSource().Token;
+            Assert.AreEqual(cancellationToken, options.WithCancellationToken(cancellationToken).CancellationToken);
+
+            var writeOptions = new WriteOptions();
+            Assert.AreSame(writeOptions, options.WithWriteOptions(writeOptions).WriteOptions);
+
+            var propagationToken = new ContextPropagationToken(CallSafeHandle.NullInstance, DateTime.UtcNow, 
+                CancellationToken.None, ContextPropagationOptions.Default);
+            Assert.AreSame(propagationToken, options.WithPropagationToken(propagationToken).PropagationToken);
+
+            var credentials = new FakeCallCredentials();
+            Assert.AreSame(credentials, options.WithCredentials(credentials).Credentials);
 
-            // Change original instance is unchanged.
+            // Check that the original instance is unchanged.
             Assert.IsNull(options.Headers);
             Assert.IsNull(options.Deadline);
             Assert.AreEqual(CancellationToken.None, options.CancellationToken);