public async Task DisposeAsync_DisposesBuckets() { // Arrange var bucket1 = new Mock <IBucket>(); bucket1.Setup(m => m.Dispose()); var bucket2 = new Mock <IBucket>(); bucket2.Setup(m => m.Dispose()); var cluster = new Mock <ICluster>(); cluster .Setup(m => m.BucketAsync("bucket1")) .ReturnsAsync(bucket1.Object); cluster .Setup(m => m.BucketAsync("bucket2")) .ReturnsAsync(bucket2.Object); var clusterProvider = new Mock <IClusterProvider>(); clusterProvider .Setup(m => m.GetClusterAsync()) .ReturnsAsync(cluster.Object); var provider = new BucketProvider(clusterProvider.Object); await provider.GetBucketAsync("bucket1"); await provider.GetBucketAsync("bucket2"); // Act await provider.DisposeAsync(); // Assert bucket1.Verify(m => m.DisposeAsync(), Times.AtLeastOnce); bucket2.Verify(m => m.DisposeAsync(), Times.AtLeastOnce); }