【发布时间】:2013-11-18 13:47:25
【问题描述】:
我有一个简单的视图模型,我正在对其进行单元测试,但我似乎无法理解这种行为。我认为这可能与淘汰赛有选择地跟踪依赖项或缓存计算结果有关。
代码(represented in this fiddle):
function viewModel() {
var serviceErrors = ko.observable([]),
isCancelImmediately = ko.observable(true),
futureDate = ko.observable(),
errors = ko.computed(function() {
var allErrors = serviceErrors(),
isImmediate = isCancelImmediately(),
selectedDate = futureDate();
if(!selectedDate && !isImmediate) {
allErrors.push('Please select a date if not immediate.');
}
return allErrors;
});
return {
futureDate: futureDate,
errors: errors,
isCancelImmediately: isCancelImmediately
};
}
test('should give error if user has not selected a date when closing immediately', function() {
var sut = viewModel();
ok(!sut.futureDate(), 'no date should be set to start with');
sut.isCancelImmediately(false);
equal(sut.errors().length, 1, 'should contain a future date error if user hasn\'t entered a date');
sut.futureDate('11/12/2014');
equal(sut.futureDate(), '11/12/2014', 'should have set future date');
equal(sut.errors().length, 0, 'should not be showing error');
});
谁能告诉我为什么最后一个断言失败了?
【问题讨论】:
标签: javascript unit-testing knockout.js qunit