public void AssignToRoute_01() { // arrange: TrackingId id = new TrackingId("CRG01"); IItinerary itinerary = MockRepository.GenerateStrictMock <IItinerary>(); itinerary.Expect(i => i.Equals(null)).Return(false); itinerary.Expect(i => i.FinalArrivalDate).Return(DateTime.Now + TimeSpan.FromDays(60)).Repeat.AtLeastOnce(); IRouteSpecification specification = MockRepository.GenerateStrictMock <IRouteSpecification>(); specification.Expect(s => s.IsSatisfiedBy(itinerary)).Return(true).Repeat.Once(); NewCargo state = new NewCargo(id, specification); // act: CargoState newState = state.AssignToRoute(itinerary); // assert: Assert.IsNotNull(newState); Assert.IsTrue(state.CalculationDate <= newState.CalculationDate); Assert.AreEqual(RoutingStatus.Routed, newState.RoutingStatus); Assert.AreSame(itinerary, newState.Itinerary); Assert.AreNotSame(state, newState); Assert.IsFalse(state.Equals(newState)); Assert.IsFalse(newState.Equals(state)); itinerary.VerifyAllExpectations(); specification.VerifyAllExpectations(); }