public void LengthIsCached() { IDataPacket subPacket1 = _mockRepository.StrictMock <IDataPacket>(); IDataPacket subPacket2 = _mockRepository.StrictMock <IDataPacket>(); IDataPacket dataPacket = null; With.Mocks(_mockRepository).Expecting(delegate { subPacket1.Expect(x => x.Length).Return(Length1).Repeat.Any(); subPacket2.Expect(x => x.Length).Return(Length2).Repeat.Any(); }).Verify(delegate { dataPacket = new DataPacketNode(subPacket1, subPacket2); }); With.Mocks(_mockRepository).Expecting(delegate { // No calls on the sub-packets expected!! }).Verify(delegate { Assert.AreEqual((Length1 + Length2), dataPacket.Length); }); }