Правильное наблюдение есть у Вадима. С точки зрения Аксона, есть только одно место, где вам нужно добавить функцию equals()
, которая является Агрегатным Членом, который содержится в списке на Агрегате (Корень).
FixtureConfiguration
модуля axon-test
будет сопоставлять Агрегат до обработки команды и после нее, чтобы гарантировать, что состояние не было изменено в обработчике команд. Аксон использует глубокое сравнение полей, если не предусмотрен метод equals()
. Список объектов будет неправильно соответствовать объектам, так как ссылка на объект будет использоваться, если не указано equals()
. Таким образом, требуется, чтобы ваши «Совокупные члены», которые вы помещаете в список / набор / карту, имели реализацию функции equals()
.
Обратите внимание, что это на самом деле не идеально. Сущности не должны быть взаимозаменяемыми, поскольку они не определяются в основном своими атрибутами (такими как объекты-значения и сообщения), а скорее их идентичностью и потоком непрерывности. Это известное предупреждение, с которым модуль axon-test
планирует справиться за один день.
Итак, чтобы ответить на ваш вопрос вкратце: для тестирования наличие обоих более чем справедливо, но в реальной системе это не нужно.
Doh! Хорошо, я понял это. Правильный синтаксис (VB.Net):
mnuMyMenu.Items.Remove(mnuMyMenu.Items(1))