我刚开始尝试为Meteor使用速度测试。我试图对我的路线进行测试,遇到了障碍。我无法使用Jasmine或Mocha:
(只有包铁:路由器,速度: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'.
这意味着路由器确实找到了路由&#34; bar&#34;,但导航似乎没有以相同的方式运行。更奇怪的是,当我导航到http://localhost:64927/?jasmine=true
时,我的浏览器通过一些神奇的方式跳转到http://localhost:64927/bar
。
有什么想法吗?
另外,我注意到有时候测试会运行绿色,尽管JS控制台上有一个未被捕获的异常。由于这些错误往往会破坏测试函数的执行并且没有处理断言,因此在测试框架中这是一个非常危险的事情。知道如何应对这个吗?
答案 0 :(得分:1)
实际上你必须添加一个助手,并在Velocity docs中将Velocity / Jasmine与铁路由器集成进行描述:
https://velocity.readme.io/docs/jasmine-integration-tests-with-iron-router
答案 1 :(得分:0)
我的猜测是你可能会遇到异步问题。 Router.go
不是即时的,您在检查当前路线是否已切换后立即过快检查。
此外,jasmine=true
是启动镜像测试时被点击的镜像的URL,因此当您获得当前路径(太快)时,它可能会被返回。当您手动转到镜像时,看起来测试再次运行(因为您有jasmine=true
),而后者又在运行Router.go
我无法确切地说出您要测试的内容,但您可以在Router.onAfterAction
中添加一个钩子来执行您的断言。不要忘记使用Jasmine的done()
方法,因为您要进行异步测试。
对于在异常上运行绿色的测试,这将是一个错误!如果你可以创建一个可重现的repo并在GitHub上发布框架问题的bug,它将有助于解决这个问题。
希望有所帮助!