首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试需要加载光明域的元素?

如何测试需要加载光明域的元素?
EN

Stack Overflow用户
提问于 2016-03-30 01:05:23
回答 1查看 115关注 0票数 0

我有一个元素:

代码语言:javascript
复制
<dom-module id="ens-page-router">

    <template>

        <iron-pages attr-for-selected="url">
            <content select="ens-page"></content>
        </iron-pages>

    </template>

    <script>
        Polymer({
            is: 'ens-page-router',
            attached: function(){
                //using async because the pages url will be undefined otherwise
                this.async(function(){           
                    var pages = this.getContentChildren()
                    var ironPages = this.$$('iron-pages');


                    pages.forEach(function(elem){
                        page(elem.url, function(){
                            ironPages.select(elem.url);
                        });
                    });

                    page();
                });
            }
        });
    </script>

</dom-module>

还有一个测试装置:

代码语言:javascript
复制
<test-fixture id='underTest'>
        <template>
            <ens-page-router>
                <ens-page url="/derp">
                    <div>derp</div>
                </ens-page>
                <ens-page url="/foo/bar">
                    <div>foo bar</div>
                </ens-page>
            </ens-page-router>
        </template>    
    </test-fixture>

我不知道如何在光环初始化后运行我的测试。我尝试过侦听附加的事件,但它从不触发,因为在调用夹具()之前,我无法注册。我也尝试过同步测试,但测试在启动附加事件之前运行。

代码语言:javascript
复制
 describe("<ens-page-router>", function(){
        var underTest;
        var ironPages;
        var selectSpy;
        var routes = {};

        //stub page.js
        var fakePage = function(path, callback){
            if(callback){
                routes[path] = callback;
            }else if(path){
                routes[path]();
            }

        beforeEach(function(){
            page = fakePage;
            underTest = fixture('underTest');
            ironPages = underTest.$$('iron-pages');
            selectSpy = sinon.spy(ironPages, "select");
        });

        it('should select the derp page', function(){
            page('/derp');

            assert(selectSpy.calledWith("/derp"));
        });
 });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-30 12:33:27

将测试包装在setTimeout中将允许加载dom。

代码语言:javascript
复制
 it('should select derp as the current page', function(done){       
            waitForDom(function(){
                page('/derp');

                assert(selectSpy.calledWith("/derp"));
                done();
            });
        });

function waitForDom(callback){
            setTimeout(callback, 1);
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36297854

复制
相关文章

相似问题

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