Для следующей формы регистрации я настроил, чтобы первое поле ввода с id="signUpName"
было сфокусировано при отображении формы. Для создания формы используется Backbone-forms.
Я хочу проверить с помощью Jasmine v.1.3.0, может ли определенная форма ввода поле фокусируется, когда я загружаю представление:
it("should focus the name field of the sign-up form", function() {
var signUpName = userController.loginView.signUpForm.$el.find("#signUpName");
userController.loginView.showSignUpForm();
expect(signUpName).toBeFocused();
// expect(signUpName.is(":focus")).toBe(true);
});
Жасмин предлагает:
Expected '<input id="signUpName" name="signUpName" type="text">' to be focused.
Как видно из спецификации, я использую сопоставитель toBeFocused()
из jasmine-jquery. Я использую последнюю версию расширения 1.5.93. Я также нашел обсуждение реализации toBeFocused()
и заметил, что они тем временем изменили его на альтернативная реализация, предложенная Райаном Гринбергом.
В качестве альтернативы я попытался отследить событие focus — есть ли оно на самом деле?
it("should focus the name field of the sign-up form", function() {
var signUpName = userController.loginView.signUpForm.$el.find("#signUpName");
var spyEvent = spyOnEvent(signUpName, 'focus');
userController.loginView.showSignUpForm();;
expect('focus').toHaveBeenTriggeredOn(signUpName);
expect(spyEvent).toHaveBeenTriggered();
});
Жасмин предлагает:
Expected event focus to have been triggered on [object Object]