Изменение переменной компонента в угловом тесте влияет на другие тесты

Следующий код показывает, что это возможно:

class OverridenStaticMeth {   

static void printValue() {   
System.out.println("Overriden Meth");   
}   

}   

public class OverrideStaticMeth extends OverridenStaticMeth {   

static void printValue() {   
System.out.println("Overriding Meth");   
}   

public static void main(String[] args) {   
OverridenStaticMeth osm = new OverrideStaticMeth();   
osm.printValue();   

System.out.println("now, from main");
printValue();

}   

} 
1
задан timray 21 January 2019 в 10:27
поделиться

1 ответ

Из вашего StackBlitz (и многих лог-операторов!) Видно, что при изменении значения в component.board оно также меняло значение в data. Это имеет смысл, поскольку назначение в методе beforeEach (component.board = data;) будет просто назначать component.board тот же указатель, что и data. Тогда изменение одного изменит другое.

Чтобы обойти это, вы должны, как отмечают некоторые комментарии, клонировать объект data, а не назначать его напрямую. Вы можете сделать это, используя JSON.parse(JSON.stringify(MockBoard['board'])), как упоминал Джелле , или использовать что-то вроде метода Лодаша clone (cloneDeep для более сложных объектов).

Вот обновленный StackBlitz , который вы можете использовать для сравнения с вашим исходным кодом.

0
ответ дан Tiz 21 January 2019 в 10:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: