2016-05-25 14 views
0

私は現在、依存性の少ないビューモデルでko.computedを持っています。以前の値と現在の値を比較するジャスミンテストケースを作成するko.computed関数をトリガする方法を見つけることができません。ジャスミンでko.computedを誘発するKnockoutJSテスト

以下は私のko.computedです。

ko.computed(function() { 
      if (offers.hasError()) { 
       model.offers.resetCards(self.offersCards); 
      } 
     }); 

これをトリガーする方法はありますか?

答えて

0

あなたcomputedは、実際に私はあなたが使用することを意図と思わせるこれ、何も返さないsubscribe

offers.hasError(!offers.hasError()); 
:これは新しい何かに hasErrorの値を変更することによってトリガすることができ

offers.hasError.subscribe(function(newValue) { 
    if (newValue) { 
    model.offers.resetCards(self.offersCards); 
    } 
}); 

計算の現在の値を取得するには、()を使用して呼び出します。

var comp = ko.computed(function() { return "A" }); 
console.log(comp()); // Prints "A" 

以前の値と現在の値を記録するには、"beforeChange"サブスクリプションを作成します。

var obs = ko.observable("Observable"); 
 

 

 
var computed = ko.computed(function() { 
 
    return "Computed " + obs(); 
 
}); 
 

 
computed.subscribe(function(oldValue) { 
 
    console.log("Value before: " + oldValue); 
 
}, null, "beforeChange"); 
 

 
computed.subscribe(function(newValue) { 
 
    console.log("Value after: " + newValue); 
 
    console.log("---------------------"); 
 
}); 
 

 

 
obs("Observable 1"); 
 
obs("Observable 2");
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>

ですから、古い値に新しいを比較するテストを書きたい場合は、あなたがこれを書くことができる::

var obs = ko.observable("Observable"); 
 
var computed = ko.computed(function() { 
 
    return "Computed " + obs(); 
 
}); 
 

 

 
var computedOldValue = computed(); 
 

 
// Whenever the computed changes, store its old value 
 
computed.subscribe(function(oldValue) { 
 
    computedOldValue = oldValue; 
 
}, null, "beforeChange"); 
 

 
// To compare the current to the new value: 
 
console.log("Computed has changed: ", computedOldValue !== computed()); 
 

 
obs("TEST"); 
 

 
console.log("Computed has changed: ", computedOldValue !== computed());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
それがどのように動作するかです

関連する問題