Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Polymer 无法在WCT中存根私有元素_Polymer_Polymer 1.0_Sinon_Web Component Tester - Fatal编程技术网

Polymer 无法在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

使用聚合物1和网络组件测试仪。。。在chrome上的阴影dom中进行测试

在WCT中,尝试使用
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
的值,您可以设置它,即la
spToast.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
      );
});