2

我刚刚开始尝试对 Meteor 使用速度测试。我在尝试测试我的路线时遇到了障碍。我不能让它与 Jasmine 或 Mocha 一起使用:

(仅将软件包 iron:router、velocity:html-reporter、coffeescript 和 sanjo-jasmine 添加到默认的流星应用程序中。)在 /tests/jasmine/client/integration/router-test.coffee 中:

describe "Route", ->
    describe "non-existing", ->
        it "should not run green", ->
            Router.go "foo"
            expect(Router.current().url).toEqual("/foo")
    describe "existing", ->
        it "should run green", ->
            Router.go "bar"
            expect(Router.current().url).toEqual("/bar")

在 /client/router.coffee 中:

Router.route "bar"

在默认的 html 文件中:

<template name="bar">
    <p>Yeah.</p>
</template>

如果我Router.go("bar")在 JS 控制台中运行,它可以正常工作:Router.current().url输出/bar。但是,在记者中,我收到以下错误:

Expected 'http://localhost:64927/?jasmine=true' to equal '/bar'.

这意味着路由器确实找到了路线“栏”,但导航似乎没有以相同的方式运行。更奇怪的是,当我导航到 时http://localhost:64927/?jasmine=true,我的浏览器会以某种神奇的方式跳转到http://localhost:64927/bar

有任何想法吗?

此外,我注意到有时测试运行绿色,尽管 JS 控制台上存在未捕获的异常。由于这些错误往往只会破坏测试功能的执行,并且不会处理任何断言,因此在测试框架中这是一件非常危险的事情。知道如何应对吗?

4

2 回答 2

1

实际上,您必须添加一个助手,它在 Velocity 文档中将 Velocity / Jasmine 与 Iron Router 集成中进行了描述:

https://velocity.readme.io/docs/jasmine-integration-tests-with-iron-router

于 2015-09-02T20:40:19.307 回答
0

我的猜测是您可能遇到了异步问题。Router.go不是即时的,而且您在查看当前路线是否已切换之后太快了。

此外,这jasmine=true是启动镜像测试的镜像的 URL,因此当您获得当前路由(太快)时,很可能会返回该 URL。当您手动进入镜像时,看起来测试又在运行(因为您有jasmine=true),而测试又在运行Router.go

我无法准确说出您要测试的内容,但您可以添加一个钩子来在Router.onAfterAction. 不要忘记也使用 Jasmine 的done()方法,因为您将进行异步测试。

至于在异常情况下运行绿色的测试,那将是一个错误!如果您可以创建一个可重现的 repo 并在 GitHub 上发布有关框架问题的错误,这将有助于解决该问题。

希望有帮助!

于 2015-01-25T02:05:58.267 回答