功能测试,jQuery和assert_select_jquery

时间:2011-10-23 13:26:00

标签: ruby-on-rails-3.1

在我的应用程序中,我使用的是jQuery插件,FullCalendar - 它是一个看起来像Google Calendar的jQuery日历。

我想编写一个功能测试(CalendarControllerTest< ActionController :: TestCase)来测试正在显示的日历(CalendarController #index)。

如果日历是常规HTML,那将很容易,而不是用JavaScript编写,所以在我的HTML页面中我有:

<script src="fullcalendar.js" type="text/javascript"></script>
<script src="calendar.js" type="text/javascript"></script>
[...]
<div id="calendar"></div>

在calendar.js里面(来自Rails 3.1的脚手架 - CalendarController + calendar.js + calendar.css + CalendarControllerTest)我加载了FullCalendar:

$('#calendar').fullCalendar();

因此,在我的功能测试(CalendarControllerTest)中,这将不起作用:

# Checks <div class="fc-content"> is present i.e the calendar is being displayed
assert_select '.fc-content', count: 1

我尝试使用assert_select_jquery但没有成功:

assert_select_jquery :html, '#calendar' do
  assert_select '.fc-content', count: 1
end

我知道Webrat / Capybara,但从我看到它用于集成测试而不是功能测试。

你会怎么做?

1 个答案:

答案 0 :(得分:0)

回答自己...... 我使用默认的Rails测试框架来测试模型和控制器(目录test / unit和test / functionnal)。 当你有像create.js.erb或destroy.js.erb这样不引人注意的JavaScript时,assert_select_jquery用于功能测试(控制器)。 我没有在functionnal测试中完全测试JavaScript,因为我在目录测试/集成中使用了Capybara。