public void WhenAnyChainingShouldReportChanges() { var fixture = new TestView(); var output = new List <string>(); fixture.WhenAnyDP(x => x.ViewModel, x => x.Value) .Where(x => x != null) .Select(x => x.WhenAny(y => y.SomeProperty, y => y.Value)).Switch() .Subscribe(output.Add); Assert.Equal(0, output.Count); fixture.ViewModel = new TestViewModel() { SomeProperty = "Foo", }; Assert.Equal(1, output.Count); fixture.ViewModel.SomeProperty = "Bar"; Assert.Equal(2, output.Count); }