3

以下代码在浏览器中运行,但如何使用 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 中工作。

4

2 回答 2

3

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

于 2012-11-13T17:45:42.910 回答
3

Jasminerice 允许将任何放入其中的模板spec/javascript/fixtures视为固定装置。你只需要执行loadFixture 'fixtureName'. Jasminerice 的夹具文档解释了更多。

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

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

于 2012-11-12T16:51:11.190 回答