Из вашего StackBlitz (и многих лог-операторов!) Видно, что при изменении значения в component.board
оно также меняло значение в data
. Это имеет смысл, поскольку назначение в методе beforeEach
(component.board = data;
) будет просто назначать component.board
тот же указатель, что и data
. Тогда изменение одного изменит другое.
Чтобы обойти это, вы должны, как отмечают некоторые комментарии, клонировать объект data
, а не назначать его напрямую. Вы можете сделать это, используя JSON.parse(JSON.stringify(MockBoard['board']))
, как упоминал Джелле , или использовать что-то вроде метода Лодаша clone
(cloneDeep
для более сложных объектов).
Вот обновленный StackBlitz , который вы можете использовать для сравнения с вашим исходным кодом.
Хотя я не знаю ни о каких определенных инструментах (по крайней мере никакие с открытым исходным кодом), я предлагаю, чтобы Вы установили систему, которая покроет Ваш полный сбор требований и процесс реализации. Требования могли быть прослежены в системе, которая будет также содержать документы дизайна (который мог быть "проверен из" и "предан" системе). Таким образом, Вы занялись бы проблемой наличия нескольких изменений документов дизайна вокруг. Addionally, документы дизайна и требования могли быть прослежены легко. Если бы эта система была связана с Вашей системой управления исходным кодом, то Вы дополнительно упростили бы свой процесс разработки / отслеживание требований.
Я думаю, что ключ должен иметь специализированную систему слежения там для ошибок/запросов, и установить процесс набора для коммуникации. С этим в минимуме Вы начнете получать последовательную обратную связь. Оттуда можно настроить его для получения определенных потребностей.
Как в стороне, вместо того, чтобы просто использовать электронную почту для Вашей коммуникации, я настоятельно рекомендую идти в ковку как BaseCamp для инструмента управления проектами. Я нахожу, что это помогает значительно с хранением сообщений, документации и временных шкал, переданных клиенту.
Если Вы используете Сервер Основы Команды, я рекомендую Вам установить Веб-доступ TeamPlain. Они позволяют Вам выставлять веб-интерфейс своему проекту TFS. Единственные вещи, оставленные сделать, дают права Вашему клиенту и имени пользователя и паролю.
Иначе существуют некоторые инструменты оплаты как FogBugz. Конечно, принципал должен прослушивать инструменты создания отчетов, непосредственно связанные с Вашим Управлением исходным кодом так, чтобы разработчики могли легко исправить ошибки.
Другая возможность состоит в том, чтобы использовать два продукта на концерте, вот наша текущая установка с командой 12:
osTicket для входящих запросов от клиентов
redmine для билетов разработки