我试图通过调用self.isModelvalid
我的测试并假设我会返回来手动验证我的模型true
,因为在调用它之前,我将测试值分配给了我的模型中的所有属性。这是我在测试中的调用方式
listingViewModel = new ListingViewModel();
listingViewModel.country('a');
listingViewModel.city('a');
listingViewModel.cummunity('a');
listingViewModel.subCummunity('a');
listingViewModel.postCode('1');
expect(listingViewModel.isModelValid()).toBe(true);
这是我的源类,其中存在我的模型和所有方法:
function validateModel(model) {
var self = model;
for (var prop in self) {
if (self.hasOwnProperty(prop)) {
if (!(self[prop].isValid())) {
return false;
}
}
}
return true;
}
function ListingViewModel() {
var self = this;
self.country = ko.observable('').extend({required : true});
self.city = ko.observable('').extend({ required: true });
self.cummunity = ko.observable('').extend({ required: true });
self.subCummunity = ko.observable('').extend({ required: true });
self.postCode = ko.observable('').extend({ required: true });
self.isModelValid = function () {
validateModel(self);
};
self.addListing = function () {
};
}
ko.validation.configure({
decorateElement: false,
errorElementClass: "error", // class name
insertMessages: false,
grouping: { deep: true, observable: true }
});
当我运行时它说
listingViewModel.isModelValid() TypeError: self[prop].isValid is not a function
我认为当它validateModel
尝试验证isModelValid
并且失败时会发生此错误,因为isModelValid
它不是其属性的函数。
那么如何仅验证淘汰模型中的属性。
谢谢