public void Ctor_withValidArgs_works(EventType type) { // arrange: List <object> mocks = new List <object>(); Username userId = new Username("Giacomo"); IUser user = MockRepository.GenerateStrictMock <IUser>(); user.Expect(u => u.Username).Return(userId).Repeat.Once(); mocks.Add(user); TrackingId cargoId = new TrackingId("CARGO001"); UnLocode location = new UnLocode("UNLOC"); VoyageNumber voyage = new VoyageNumber("VYG001"); ICargo cargo = MockRepository.GenerateStrictMock <ICargo>(); cargo.Expect(c => c.TrackingId).Return(cargoId).Repeat.Once(); IDelivery delivery = MockRepository.GenerateStrictMock <IDelivery>(); delivery.Expect(d => d.LastKnownLocation).Return(location).Repeat.Once(); delivery.Expect(d => d.CurrentVoyage).Return(voyage).Repeat.Once(); mocks.Add(delivery); cargo.Expect(c => c.Delivery).Return(delivery).Repeat.Twice(); mocks.Add(cargo); DateTime completionDate = DateTime.UtcNow; // act: IEvent underTest = new Event(user, cargo, type, completionDate); // assert: Assert.AreSame(userId, underTest.User); Assert.AreSame(cargoId, underTest.Cargo); Assert.AreSame(location, underTest.Location); Assert.AreSame(voyage, underTest.Voyage); Assert.AreEqual(completionDate, underTest.Date); Assert.AreEqual(type, underTest.Type); foreach (object mock in mocks) { mock.VerifyAllExpectations(); } }