こんにちは、バックボーン ビューとその関数の 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
})
前もって感謝します