テストを呼び出す前に、モデル内のすべてのプロパティにテスト値を割り当てたため、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
では、ノックアウト モデルでプロパティのみを検証する方法。
ありがとう