【问题标题】:Trouble getting Jasmine to test routing (iron:router related)让 Jasmine 无法测试路由(铁:路由器相关)
【发布时间】:2015-01-23 10:58:39
【问题描述】:

我刚刚开始尝试对 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>

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

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

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

有什么想法吗?

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

【问题讨论】:

    标签: jasmine iron-router meteor-velocity


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      希望有帮助!

      【讨论】:

      • 事实证明,Router.go 明显的异步特性确实存在问题。 (它甚至没有回调,这使得修复非常令人沮丧,因为唯一的出路是超时。)我准备为 Velocity 提交至少两个错误,因为其中一些似乎与 Jasmine 无关或摩卡:(
      • 对我来说,这是一个 :),因为它有助于解决这些错误!
      • 您也可以使用 Meteor.setTimeout() 获得创意,并在延迟一段时间后进行测试。我想您还应该游说 Iron Router 以包含 Router.go() 功能的回调版本。
      • 我在 meteor-jasmine wiki 中看到了与此相关的帖子:github.com/Sanjo/meteor-jasmine/wiki/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      • 2014-09-03
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 2014-10-09
      相关资源
      最近更新 更多