public void OnItemsChangedItemAddTest() { var spreadsheet = new SpreadsheetView(); var privateAccessor = new PrivateAccessor(spreadsheet); //Initialize ItemCollection Mock.NonPublic.Arrange(spreadsheet, "OnItemsChanged", ArgExpr.IsAny<NotifyCollectionChangedEventArgs>()).DoNothing(); spreadsheet.ItemsSource = new List<TestData>(); spreadsheet.OnApplyTemplate(); Assert.IsNotNull(spreadsheet.ItemsCollection); Mock.Reset(); //Create data item and its wrapper var dataItem = new TestData {Text = "test", FractionalNumber = 3.5}; var itemWrap = ItemWrap.BuildNew(dataItem); //Arrabge ManageExpandStates and BindContainerToItem Mock.Arrange(() => spreadsheet.ManageExpandStates(Arg.IsAny<IDetailColumn>())); Mock.NonPublic.Arrange(spreadsheet, "BindContainerToItem", ArgExpr.IsAny<SpreadsheetItemContainer>(), ArgExpr.IsAny<IWrap>()); //Make spreadsheet disposed privateAccessor.SetField("_disposed", true); spreadsheet.ItemsCollection.Add(itemWrap); //Check ManageExpandStates and BindContainerToItem invocations when spreadsheet is disposed Assert.IsTrue((bool)privateAccessor.GetField("_disposed")); Mock.NonPublic.Assert(spreadsheet, "BindContainerToItem", Occurs.Never(), ArgExpr.IsAny<SpreadsheetItemContainer>(), ArgExpr.IsAny<IWrap>()); Mock.Assert(() => spreadsheet.ManageExpandStates(Arg.IsAny<IDetailColumn>()), Occurs.Never()); //Mock ItemContainerGenerator.ContainerFromItem method and add new item to ItemsCollection //this invokes OnItemsChanged privateAccessor.SetField("_disposed", false); var container = new SpreadsheetItemContainer(spreadsheet); Mock.Arrange(() => spreadsheet.ItemContainerGenerator.ContainerFromItem(Arg.IsAny<object>())).Returns(container); Mock.Arrange(() => spreadsheet.ParentColumn).Returns(Mock.Create<IDetailColumn>()); spreadsheet.ItemsCollection.Add(itemWrap); //Check ManageExpandStates and BindContainerToItem invocations when spreadsheet is not disposed Assert.IsFalse((bool)privateAccessor.GetField("_disposed")); Mock.NonPublic.Assert(spreadsheet, "BindContainerToItem", Occurs.Once(), container, itemWrap); Mock.Assert(() => spreadsheet.ManageExpandStates(Arg.IsAny<IDetailColumn>()), Occurs.Once()); }