public void Changing_product_name_should_raise_domain_event() { const string oldName = "Widget"; const string newName = "Gadget"; var product = new Product(); IDomainEvent @event = null; using (DomainEvent.TestWith(e => { @event = e; })) { product.Name = oldName; @event.ShouldBeNull(); // event should not be raised on initial set. product.Name = newName; } var productNameChangedEvent = @event as ProductNameChangedEvent; productNameChangedEvent.ShouldNotBeNull(); productNameChangedEvent.OldProductName.ShouldEqual(oldName); productNameChangedEvent.NewProductName.ShouldEqual(newName); }