Polymer 无法在WCT中存根私有元素
使用聚合物1和网络组件测试仪。。。在chrome上的阴影dom中进行测试 在WCT中,尝试使用Polymer 无法在WCT中存根私有元素,polymer,polymer-1.0,sinon,web-component-tester,Polymer,Polymer 1.0,Sinon,Web Component Tester,使用聚合物1和网络组件测试仪。。。在chrome上的阴影dom中进行测试 在WCT中,尝试使用stub('sp-toast',{display:()=>{}}来存根spToast.display()但我尝试将未定义的属性显示包装为函数时出现错误。。。。我做错了什么 我尝试存根它的原因是,当测试运行代码库时,我得到了spToast.display不是一个函数 原始代码: showAgeWarning: function() { var spApp = Polymer.dom(docume
stub('sp-toast',{display:()=>{}}来存根spToast.display()代码>但我尝试将未定义的属性显示包装为函数时出现错误。。。。我做错了什么
我尝试存根它的原因是,当测试运行代码库时,我得到了spToast.display不是一个函数
原始代码:
showAgeWarning: function() {
var spApp = Polymer.dom(document).querySelector('sp-app');
var spToast = Polymer.dom(spApp.root).querySelector('sp-toast');
var msg = "foo"
spToast.display('information', msg);
},
测试代码:
<test-fixture id="sp-veteran">
<template>
<h2>edit veteran</h2>
<sp-app>
<sp-toast></sp-toast>
<sp-veteran>
</sp-veteran>
</sp-app>
</template>
</test-fixture>
setup(function() {
replace('sp-app').with('fake-sp-app');
replace('sp-ajax').with('fake-sp-ajax');
stub('sp-value-dropdown', { setInvalidState: (state)=> {} });
myEl = fixture('sp-veteran');
});
test('it should validate the veteran', function() {
var spApp = Polymer.dom(myEl.root).querySelector('sp-app');
var spToast = Polymer.dom(spApp.root).querySelector('sp-toast');
sinon.stub(spToast, 'display');
编辑老兵
设置(函数(){
将('sp-app')替换为('fake-sp-app');
将('sp-ajax')替换为('fake-sp-ajax');
存根('sp-value-dropdown',{setInvalidState:(state)=>{});
myEl=固定装置(“sp-退伍军人”);
});
测试('它应该验证退伍军人',函数(){
var spApp=Polymer.dom(myEl.root).querySelector('sp-app');
var spToast=Polymer.dom(spApp.root).querySelector('sp-toast');
sinon.stub(spToast,“display”);
当您获得时,尝试将未定义的属性显示包装为函数
,这意味着它无法替换(尚未)不存在的方法
如果您在测试中实际获得了var-spToast=Polymer.dom(spApp.root).querySelector('sp-toast')
的值,并且测试中的任何内容都不会给出display
的值,您可以设置它,即laspToast.display=function(){};
,那么您应该能够根据需要对它设置一个间谍
把这一切放在一起,你就可以
test('it should validate the veteran', function() {
var spApp = Polymer.dom(myEl.root).querySelector('sp-app');
var spToast = Polymer.dom(spApp.root).querySelector('sp-toast');
spToast.display = function() {};
sinon.spy(spToast, 'display');
// Trigger the side effect that would lead to `display` being called
assert.equal(
spToast.display.calledOnces,
true
);
});