测试Jasmine中的Rails Route

Testing Rails Route in Jasmine

本文关键字:Route Rails 中的 Jasmine 测试      更新时间:2023-09-26

我有一个导航栏部分视图:

_navbar.html.erb

<nav class="nav-links">
   <ul>
     <li><%= link_to "Mastermind", root_path, :id => 'logo'%></li>
  </ul>
</nav>

当你点击"Mastermind"时,它会重新加载页面:

function reloadPage() {
  location.reload();
}
function logoReload() {
  $('#logo').click(reloadPage);
}

为什么这个茉莉花测试不起作用?

describe("button click", function() {
  var btn;
  beforeEach(function() {
    btn = $('#logo');
  });
 it("should reload the page", function() {
    spyOn(window, 'reloadPage');
    $(btn).click();
    expect(window.reloadPage).toHaveBeenCalled();
  });
});

我得到的响应是:错误:预期已调用spy reloadPage。

有什么想法吗?

您正在监视window,但在location上调用reload。更改您的示例:

it("should reload the page", function() {
  spyOn(location, 'reloadPage');
  $(btn).click();
  expect(location.reloadPage).toHaveBeenCalled();
});