Если у вас есть форма HTML в отдельный шаблон в файле с именем, например
templates/form.tmpl.html
и ваш JQuery в отдельный файл и с именем, например
js/validation.js
и содержащий код проверки, как
$(".form-holder").on("submit", function() {
event.preventDefault();
var userInput = $('#input-text').val();
if (userInput === 'the correct text') {
$('#text-response').text('Correct');
return;
}
$('#text-response').text('Incorrect');
});
Тогда ваш тестовый образец может быть чем-то подобным этому
describe('Interface logic', function() {
jasmine.getFixtures().fixturesPath = '';
beforeEach(function() {
loadFixtures('templates/form.tmpl.html');
appendSetFixtures('<script src="js/validation.js"></script>')
});
it('Will return correct if logic applies', function(){
$('#input-text').val('the correct text');
$('#submit-button').trigger("click");
expect($('#text-response').text()).toBe('Correct');
});
it('Will return incorrect if logic applies', function(){
$('#input-text').val('the incorrect text');
$('#submit-button').trigger("click");
expect($('#text-response').text()).toBe('Incorrect');
});
});
И спецификация бегун HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Spec Runner</title>
<link rel="stylesheet" type="text/css" href="lib/jasmine-2.0.3/jasmine.css">
<script type="text/javascript" src="lib/jasmine-2.0.3/jasmine.js"></script>
<script type="text/javascript" src="lib/jasmine-2.0.3/jasmine-html.js"></script>
<script src="lib/jasmine-2.2/boot.js"></script>
<script type="text/javascript" src="lib/jquery-2.1.3.min.js"></script>
<script type="text/javascript" src="lib/jasmine-jquery.js"></script>
<script type="text/javascript" src="specs/form.spec.js"></script>
</head>
<body>
</body>
</html>
Это имеет смысл, хотя по какой-то причине, когда я использую '' '.click()' '', а не '' '.trigger()' '', это заставляет мой SpecRunner постоянно обновляться, я тестировал его с использованием как chrome, так и firefox, любых идей? –
Держу пари, что он уволил сообщение/перезагрузку страницы. Вы можете попробовать выполнить 'e.preventDefault()'. Это будет сохраняться на одной странице без серверной почты. – beautifulcoder