首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法存根WCT中的私有元素

无法存根WCT中的私有元素
EN

Stack Overflow用户
提问于 2018-02-21 05:43:28
回答 1查看 233关注 0票数 0

使用Polymer 1和Web组件测试仪...在chrome上的shady dom中测试。

在WCT中,尝试使用stub('sp-toast', { display: ()=> {} });来存根spToast.display(),但使用Attempted to wrap undefined property display as function时出现错误...我做错了什么?

我之所以尝试存根,是因为当测试运行代码库时,我得到了spToast.display is not a function

原始代码:

代码语言:javascript
复制
 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);
  },

测试代码:

代码语言:javascript
复制
<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');
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-21 09:50:07

当你得到Attempted to wrap undefined property display as function的时候,这意味着它不能替换一个不存在的方法。

如果你在你的测试中实际得到了var spToast = Polymer.dom(spApp.root).querySelector('sp-toast')的值,而你的测试没有给display一个值,你可以像spToast.display = function() {};一样设置它,然后你应该能够根据需要设置一个间谍或其他东西。

把所有这些放在一起,你就可以

代码语言:javascript
复制
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
      );
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48894707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档