茉莉花测试问题与样机

时间:2016-07-04 20:39:44

标签: javascript jquery unit-testing coffeescript jasmine

我有一个如下所示的茉莉花咖啡因测试。我正在尝试模拟li.active事件并在javascript中测试它。以下是测试规范。

describe 'Interviews', ->
  describe 'TTI.questionAdd', ->
    it 'should close modal when choose a question is empty', ->
     spyOn(TTI.Position, 'questionCancel')

     htmlMock = '<form action="javascript:void();>"'
     htmlMock += '<ul id="#question-create-methods">'
     htmlMock += '<li class="active"><a href="#">Choose a Question</a></li>'
     htmlMock += '</ul>'
     htmlMock += '<input class="btn-question-add" type="submit">'
     htmlMock += '</form>'

     $(htmlMock).appendTo('body')

     $('.btn-question-add').on('click', TTI.Position.questionAdd)


     console.log(document.getElementsByTagName('body')[0].innerHTML)

     $(".btn-question-add").trigger('click')
     ...

这是我真正的coffeescript文件片段

TTI.Position.questionAdd = (e) ->
 e.preventDefault()
 t = $(this)
 id = t.attr 'id'
 tab = $('.nav-tab.active').data('type')
 type = 'vod'
 duration = parseInt($('.js-duration-mins').val()) * 60 + parseInt($('.js-duration-secs').val())
 switch $('#question-create-methods').find('li.active a').html()
  when 'Choose a Question'
   body = $('#library_questions').find('a.active').html()
  when 'Write a Question'
   body = $('#question_write_body').val()
  when 'Custom Question Bank'
   question_bank_id = $('#question-custom').find('a.active').data('id')
   body = $('#question-custom').find('a.active').html()
   ...

但是当我打印出$('#question-create-methods')。从实际的javascript中找到('li.active a')。html()到控制台时,它总是未定义!!这让我疯了,因为它阻止我通过模拟'li.active a'元素来正确测试它。我究竟做错了什么?可能是在加载dom之前javascript正在执行,所以我如何确保不是这种情况。

0 个答案:

没有答案