【问题标题】:How to load Rails view for testing in Jasmine?如何加载 Rails 视图以在 Jasmine 中进行测试?
【发布时间】:2012-10-31 02:42:25
【问题描述】:

以下代码可以在浏览器中运行,但是如何使用 Jasmine 对其进行测试?单击#opener 后,应该会显示一个 jQuery 对话框并进行 ajax 调用以加载内容:

$ ->
  $( "#dialog" ).dialog({ autoOpen: false });
  $( "#opener" ).click ->
    $( "#dialog" ).dialog( "open" );
    $( "#dialog" ).load('/content');

spec.js.coffee:

describe "Open Dialog Box", ->
  it "gets content from server", ->
    spyOn($, "ajax")
    $('#opener').click()
    expect($.ajax.mostRecentCall.args[0]["url"]).toEqual("/content")

查看:

<div>
  <a id="opener" href="#">See Content</a>
</div>

<div id="dialog" title="Content"></div>

它没有得到点击事件,所以看起来视图没有被加载。如何加载视图进行测试?

在 Rails 3.2.2 和 Jasminerice 中工作。

【问题讨论】:

标签: jquery ruby-on-rails coffeescript jasmine jasmine-jquery


【解决方案1】:

Jasminerice 允许将任何放在spec/javascript/fixtures 中的模板视为固定装置。你只需要执行loadFixture 'fixtureName'Fixture documentation for Jasminerice 解释更多。

我不会渲染与app/views 中相同的视图。如果你做得对,你只依赖于可以在夹具中轻松复制的次要结构(类等)。如果您需要检查您的实际视图是否符合这些假设,您可以编写一个请求规范(遗憾的是,rspec 视图规范默认匹配器无法检查文档结构,尽管您始终可以依赖一些 nokogiri-fu。

如果你有一些部分,你可以依靠Jasminerice::HelperMethods来提供一些方法/变量。

【讨论】:

【解决方案2】:

jasmine 用于 js 单元测试,如果您需要使用 dom 测试一些小的东西,即如果插件正常工作,则可以使用固定装置,对于 rails 应用程序,我建议使用 capybara imo。

【讨论】:

    猜你喜欢
    • 2017-04-14
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 2016-07-20
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    相关资源
    最近更新 更多