Итак, у меня есть приспособление:
<test-fixture id="my-element-fixture">
<template>
<my-element></my-element>
</template>
</test-fixture>
Я установил прибор для тестирования:
<script>
suite('my-element', () => {
setup(() => {
page = fixture('my-element-fixture');
});
test('testing', () => {
assert.isTrue(true);
});
});
</script>
Элемент для прибора имеет функцию ready()
:
constructor() {
super();
}
ready() {
super.ready();
this.otherElement.addEventListener('function_name', function(e) {
//stuff
}.bind(this)
);
}
и эта функция ready()
имеет объект, вызывающий элемент it:
this.otherElement
объект определен в родительском элементе этого прибора:
<my-element id="my-element" otherElement="[[$.otherElement]]"></my-element>
который создается там как:
<otherElement id="otherElement></otherElement>
и вызывается из его файла:
<link rel="import" href="../otherElement/otherElement.html">
то, что я хочу сделать, это не утруждать себя тестированием otherElement
.
В прошлом, когда у меня был элемент в приспособлении из другого элемента, я просто делал объект, чтобы занять его место, и использовал поддельный объект и создавал поддельные функции:
setup(() => {
page = fixture('my-element-fixture');
anotherElement = page.$.anotherElement;
anotherElement.functionname = function(t) {/*do nothing*/};
});
Но в прошлом, как вы можете видеть, элемент также был в элементе прибора, который я тестировал, следовательно, page.$.anotherElement
. Не уверен, что это действительно важно.
Теперь проблема в том, что я понятия не имею, что мне нужно сделать, чтобы перезаписать объект otherElement
, чтобы он не вызывался в функции ready()
.
Я попытался сделать то, что я сделал выше в настройке.
Я попытался включить элемент в фактический тестовый файл.
Я пробовал, чтобы элемент в приборе вызывал сам себя, фальшивый элемент, фактический элемент.
Почти все, что я мог придумать.
Каждый раз, когда объект не определен, я получаю сообщение об ошибке типа «this.otherElement is undefined» или «Невозможно прочитать свойство .functionname of undefined».
Любые идеи?