1

こんにちは、バックボーン ビューとその関数の 1 つのジャスミン テストを作成しようとしています。ユーザーがレンダリングされたビューのチェックボックスをオンにして送信した場合の関数の正しい動作をテストしたいと思います。

テストは次のとおりです。

describe("buildCI()", function() {
    describe("with a category selection allowed's quidget model", function() {
        it("returns a CoacheeIssue model with the selected categories", function() {
            selection_allowed = true;
            lcc_selection_allowed = false;

            var view = new Rails3DeviseRspecCucumber.Views.CategoryPicker({
                collection: categoriesCollection,
                answers: answers,
                category_ids: category_ids,
                credentials: credentialsCollection,
                user_hash: user_hash,
                selection_allowed: selection_allowed,
                lcc_selection_allowed: lcc_selection_allowed  
            });
            // render the view so we can manipulate its DOM elements
            view.render();
            elDebug = $(view.$el);
            // Check programmatically a category checkbox
            $(elDebug.find('input.category-checkbox#5061c6a48624da6f4100000a')[0]).prop('checked', true);
            // call the buildCI() function and check the result
            result = view.buildCI();
            console.log(result);
            expect(result.get('categories')).toContain('category one');
            expect(result.get('categories')).not.toContain('category two');
        })
    })

残念ながら、テストは次のメッセージで失敗します: [ ] には「カテゴリ 1」が含まれていると予想されます。ライブで動作しているので、コーディングエラーではないことはわかっています。テスト方法を知りたいだけです。

関数は次のとおりです。

buildCI: () ->
# prepare the category_ids and categories (names) attributes
if @selection_allowed
  selectedCategories = []
  for checkbox in $('input.category-checkbox')
    checkboxEl = $(checkbox)
    if checkbox.checked
      selectedCategories.push(_.find(@collection.models, (model) ->
        model.id == checkboxEl.attr('id')
        ))
  category_names = _.map(selectedCategories, (category) -> category.get('name'))
  category_ids = _.map(selectedCategories, (category) -> category.get('_id'))
else
  category_names = _.map(@collection.models, (category) -> category.get('name'))
  category_ids = _.map(@collection.models, (category) -> category.get('_id'))
return new Rails3DeviseRspecCucumber.Models.CoacheeIssue({ 
      is_solved: false, status: 'active', solution_value_estimate: '',
      answers: @answers, categories: category_names, category_ids: category_ids
    })

前もって感謝します

4

1 に答える 1

1

あなたのセレクターは厳しすぎませんか?私はそれがあることに気づきます:

$(elDebug.find('input.category-checkbox#5061c6a48624da6f4100000a')[0]).prop('checked', true);

しかし、おそらくあなたはそれをただしたいだけです:

$(elDebug.find('input.category-checkbox')[0]).prop('checked', true);
于 2012-11-10T18:37:10.373 に答える