まず、以下のコードが実際に機能していると言いたかっただけです。ジャスミン仕様で失敗しているだけです。機能はとてもシンプルです。IDが「check_all」のチェックボックスが選択されている場合は、他のすべてのチェックボックスも選択します。
テストを実行すると、#check_allがtrueであると期待するまでのすべてが、期待どおりに合格します。しかし、なぜ私の期待がすべて通っていないのか理解するのに苦労しています。何かアドバイス?
働き:
window.check_all = () ->
$('#check_all').change(->
if $('#check_all').is(':checked')
$('.checkbox').attr('checked', 'checked')
else
$('.checkbox').removeAttr('checked')
)
$(check_all)
テスト:
describe 'checkbox', ->
beforeEach ->
loadFixtures 'checkbox'
describe 'check_all', ->
it 'checks all the checkboxes if check_all is checked', ->
expect($('#check_all').is(':checked')).toBeFalsy()
expect($('#question_1').is(':checked')).toBeFalsy()
expect($('#question_2').is(':checked')).toBeFalsy()
expect($('#question_3').is(':checked')).toBeFalsy()
expect($('#question_4').is(':checked')).toBeFalsy()
expect($('#question_5').is(':checked')).toBeFalsy()
$('#check_all').attr('checked', 'checked')
$('#check_all').change()
expect($('#check_all').is(':checked')).toBeTruthy()
expect($('#question_1').is(':checked')).toBeTruthy()
expect($('#question_2').is(':checked')).toBeTruthy()
expect($('#question_3').is(':checked')).toBeTruthy()
expect($('#question_4').is(':checked')).toBeTruthy()
expect($('#question_5').is(':checked')).toBeTruthy()
備品:
<p class="small gray"><input type="checkbox" name="check_all" id="check_all"> Select All</p>
<form accept-charset="UTF-8" action="" method="post">
<ul class="library_questions">
<li>
<input class="checkbox" id="question_1" name="question[]" type="checkbox" value="1"/>
Template Q1
</li>
<li>
<input class="checkbox" id="question_2" name="question[]" type="checkbox" value="2"/>
Template Q2
</li>
<li>
<input class="checkbox" id="question_3" name="question[]" type="checkbox" value="3"/>
Template Q3
</li>
<li>
<input class="checkbox" id="question_4" name="question[]" type="checkbox" value="4"/>
Template Q4
</li>
<li>
<input class="checkbox" id="question_5" name="question[]" type="checkbox" value="5"/>
Instructions
</li>
</ul>
<input class="purple submit_button" name="commit" type="submit" value="Submit"/>
</form>