请考虑以下代码:
<test-fixture id="fixture-one">
<template>
<display-enter-button id="testEl"></display-enter-button>
</template>
</test-fixture>
<script>
suite('Query Selector Tests', function() {
test('On click function called', function() {
var circle = fixture('fixture-one').shadowRoot.querySelector('.btn');
var proto = Document.getElementById('testEl').constructor.prototype;
var func = sinon.spy(proto, '_btnClick');
circle.click();
sinon.assert.called(func);
});
});
</script>
有没有办法重写所以我可以通过Polymer local DOM(这个。$ ..)访问proto元素。
而不是
var proto = Document.getElementById('testEl').constructor.prototype;
我寻找类似的东西:
var proto = this.$.testEl.constructor.prototype;
(我的例子不起作用..)
答案 0 :(得分:2)
在测试中,您需要使用变量名称保持fixture对象。然后,您可以将其用作Web组件。
var el = fixture('fixture-one');
var circle = el.shadowRoot.querySelector('.btn');
var proto = el.constructor.prototype;
检查其ID; el.id应该等于'testEl'。
请记住,'this'在上下文中使用,您不能在元素本身之外使用它。在测试中,您应该使用this.$
而不是el.$
。另外,请记住,当您致电fixture()
时,不会返回测试夹具本身;返回模板中的元素。
答案 1 :(得分:0)
使用var proto = fixture('fixture-one');
proto将显示 - 输入 - 按钮。