我正在尝试Blanket.js和QUnit,并为填充表单并提交它的特定函数编写了一些测试。这是我测试的功能:
myObj.populateAndSubmitForm = function (data) {
var $authToken = $('#AuthToken');
var $userId = $('#userId');
var $appState = $('#appState');
var $form = $('#post');
$authToken.val(data.payload.authToken);
$userId.val(data.payload.userId);
$appState.val(data.payload.appState);
$form.attr('action', data.payload.url);
$form.submit();
}
在我的qunit测试中:
QUnit.test('populateAndSubmitForm', function (assert) {
var data = {
payload: {
authToken: 'awef2314',
userId: '1234',
appState: 'neutral',
url: 'tests.html'
}
};
$('#qunit-fixture').html(html);
var $authToken = $('#AuthToken');
var $userId = $('#userId');
var $appState = $('#appState');
var $form = $('#post');
// Prevent the form from actually submitting
$form.submit(function (e) {
e.preventDefault();
});
// Populate the form now
myObj.populateAndSubmitForm(data);
assert.equal($authToken.val(), 'awef2314', 'AuthToken OK');
assert.equal($userId.val(), '1234', 'userId OK');
assert.equal($appState.val(), 'neutral', 'appState OK');
assert.equal($form.attr('action'), 'tests.html', 'action url OK');
});
我的测试运行并且传递正常,但是blanket.js报告myObj.populateAndSubmitForm没有被覆盖(在浏览器中以红色突出显示)。
我的猜测是因为我正在测试副作用' DOM中的函数,而不是return语句。尽管如此,能够证明这个功能已经被覆盖会很好。想法?