所以我有一个夹具:
<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()
函数有一个对象调用它的元素:
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”或“Cannot read property of .functionname of undefined”之类的错误。
有任何想法吗?