Polymer 导入的元素类上没有未定义的ESLint
我有一个要测试的元素(display enter button.html):Polymer 导入的元素类上没有未定义的ESLint,polymer,eslint,polymer-2.x,web-component-tester,Polymer,Eslint,Polymer 2.x,Web Component Tester,我有一个要测试的元素(display enter button.html): 进入这里 类DisplayEnterButton扩展了Polymer.Element{ _btnClick(){ //事情发生了 }); } 我想验证当我单击enter按钮时是否调用了\u btnClick方法。这是我的单元测试: 显示输入按钮 //将套件命名为与测试类型相同的名称 套件('查询选择器测试',函数(){ test('单击时调用函数',函数(){ //选择要触发事件的元素 var circle=fi
进入这里
类DisplayEnterButton扩展了Polymer.Element{
_btnClick(){
//事情发生了
});
}
我想验证当我单击enter按钮时是否调用了\u btnClick
方法。这是我的单元测试:
显示输入按钮
//将套件命名为与测试类型相同的名称
套件('查询选择器测试',函数(){
test('单击时调用函数',函数(){
//选择要触发事件的元素
var circle=fixture('fixture-one').shadowRoot.querySelector('.btn');
//监视应该运行的方法
var clickButton=sinon.spy(DisplayEnterButton.prototype,'.'u btnClick');
//触发事件
圈。单击();
//测试一下
调用sinon.assert.called(单击按钮);
});
});
测试正在运行,但我无法通过此ESLint错误:
未定义“DisplayEnterButton”无未定义
如果可能的话,我希望避免ESLint规则异常(例如
全局
),因为我将来会大量使用这种模式。如何解决此错误?编辑:Tony接受的答案是最佳解决方案
这同样有效,但创建了一个新实例,而不是使用fixture实例
test('On click function called', function() {
// Create instance of the class we want to test the methods of
var proto = document.createElement('display-enter-button')
.constructor.prototype;
// Replace the method with a spy
var func = sinon.spy(proto, '_btnClick');
// Select the elemen to test
var btn = fixture('fixture-one').shadowRoot.querySelector('.btn');
// Simulate the trigger
btn.click();
// Check if the function was called
sinon.assert.called(func);
});
Xavier解决方案的另一个替代方案不涉及创建测试元素的另一个实例,即从测试夹具中获取被测试的实际元素:
<test-fixture id="BasicView">
<template>
<!-- give the test element an ID to query for it in tests -->
<my-view1 id="testEl"></my-view1>
</template>
</test-fixture>
<script>
suite('my-view1 tests', function() {
test('on click', function() {
var proto = document.getElementById('testEl').constructor.prototype;
var clickButton = sinon.spy(proto, '_btnClick');
// ...
});
});
</script>
套件('my-view1测试',函数(){
测试('点击',函数()){
var proto=document.getElementById('testEl').constructor.prototype;
var clickButton=sinon.spy(proto,“点击”);
// ...
});
});
谢谢,在阅读了您的代码之后,这就是我想要实现的解决方案。尽管我无法让它工作:错误:无法读取nullOdd的属性“构造函数”。它对我有用。您是否为您的测试元素提供了一个ID为testEl
?什么浏览器版本?Chrome版本59.0.3071.109(官方版本)(64位)。