Meteor 使用sanjo进行集成测试的正确方法:jasmine和Blaze.render in

Meteor 使用sanjo进行集成测试的正确方法:jasmine和Blaze.render in,meteor,jasmine,meteor-blaze,meteor-jasmine,Meteor,Jasmine,Meteor Blaze,Meteor Jasmine,我正在使用sanjo:jasmine对我的应用程序进行测试。我正在尝试使用客户端集成测试和Blaze.render进行一个简单的检查,以查看我的头模板中是否存在链接元素。我使用alanning:roles来管理角色 在我的模板中,为了简单起见,我最小化了如下内容: <template name="header"> <!-- Fixed navbar --> <div class="navbar navbar-default navbar-top na

我正在使用sanjo:jasmine对我的应用程序进行测试。我正在尝试使用客户端集成测试和Blaze.render进行一个简单的检查,以查看我的头模板中是否存在链接元素。我使用alanning:roles来管理角色

在我的模板中,为了简单起见,我最小化了如下内容:

<template name="header">
    <!-- Fixed navbar -->
    <div class="navbar navbar-default navbar-top navbar-fixed-top" role="navigation">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="sr-only fa fa-bars"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a id="homelink" class="navbar-brand {{isActiveRoute regex='home' className='active'}}" href="/">AppName</a>
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li class="{{isActiveRoute regex='dashboard' className='active'}}"><a id="daskboardlink" href="{{pathFor 'dashboard'}}">Dashboard</a></li>
                    {{#if isInRole 'ADMIN'}}
                        <li class="{{isActiveRoute regex='admin' className='active'}}"><a id="adminlink" href="{{pathFor 'admin'}}">Administration</a></li>
                    {{/if}}
                </ul>
                <ul class="nav navbar-nav navbar-right">
                  {{#if currentUser}}
                    <a href="/signout">Sign Out</a>
                  {{else}}
                  <a href="/signin">Sign In</a>
                  {{/if}}
                </ul>
            </div>
            <!--/.nav-collapse -->
        </div>
    </div>
</template>

匿名用户的第一组测试顺利通过,管理员的登录和注销也是如此。但是,检查adminlink是否存在的测试失败。这似乎是测试测试中是否存在元素的正确方法,但似乎模板尚未完全呈现。

如前所述添加帮助程序,然后在规范顶部的每个元素之前添加,如下所示:

describe("Header template - NO MOCKS", function() {
    beforeEach(function (done) {
        Router.go('/');
        Tracker.afterFlush(done);
    });

    beforeEach(waitForRouter);

    ...rest of your code
}
describe("Header template - NO MOCKS", function() {
    beforeEach(function (done) {
        Router.go('/');
        Tracker.afterFlush(done);
    });

    beforeEach(waitForRouter);

    ...rest of your code
}