Я пытаюсь написать тест для поля ko.computed
, который зависит от двух других сложных вычислений (удаленных здесь для демонстрации).Измельчение вычисляемых полей с помощью Jasmine и Knockout
function PositionsViewModel(options) {
var self = this;
self.computed1 = ko.computed(function() { return 1; });
self.computed2 = ko.computed(function() { return 2; });
self.computedIWantToTest = ko.computed(function() {
return self.computed1() + self.computed2();
});
}
В моем тесте жасмин я создаю экземпляр виртуальной машины в beforeEach так:
this.subject = new PositionsViewModel();
Я хочу, чтобы иметь возможность окурок computed1
и computed2
, чтобы я мог проверить computedIWantToTest
в изоляции. Пока мои попытки сделать это потерпели неудачу.
Я пробовал прямо на экземпляре vm. Но, похоже, что, хотя методы перезаписаны, вычисляемые кешируют функцию в некотором роде.
Вы правильны, 'computed' действительно держит ссылку на наблюдаемые (в том числе computeds), когда он первый бежит, чтобы установить его отслеживание зависимостей. Вам нужно будет изменить исходные вычисления, не создавая для них новую функцию. – Tyrsius