Sinon.jsの価値のある代替手段はありますか?
ありがとう。
それほど高度ではありませんが、ジャックを見ることができます。
testdouble.jsというライブラリもあります。これは、sinon.jsよりもオブジェクト指向の一種です。
また、 testdouble guysによるこの記事では、sinon.jsとtestdouble.jsの違いについて説明しています。
var td = require('testdouble');
var fetch = td.function();
td.when(fetch(42)).thenReturn('Jane User');
fetch(42); // -> 'Jane User'
場合によってはSinonの代わりになる可能性のあるcandy-wrapperという新しいプロジェクトを開始しました: https ://www.npmjs.com/package/candy-wrapper
これはそれを使用する方法のいくつかの例です、誰かがそれをより良くする方法について何か洞察を持っているなら私はフィードバックが欲しいです:
var Wrapper = require("candy-wrapper");
// a simple test object
var myDrone = {
name: "DJI",
fly: function(direction) {
return true;
}
}
new Wrapper(myDrone, "name");
new Wrapper(myDrone, "fly");
myDrone.fly("north");
myDrone.fly("west");
// evaluating previous calls through the 'historyList' and 'Filters'
myDrone.fly.historyList.filterFirst().expectCallArgs("north"); // true
myDrone.fly.historyList.filterSecond().expectCallArgs("east"); // false
myDrone.fly.expectReportAllFailtures(); // throws an error about the "east" expecation failing
// modifying behavior using 'Triggers'
myDrone.fly.triggerOnCallArgs("east").actionReturn(false); // will return 'false' when called with "east"
myDrone.fly("east"); // false
myDrone.fly("west"); // true (the default return value)
// working with properties
myDrone.name.triggerOnSet().actionThrowException(new Error("do not set the name"));
myDrone.name = "Bob"; // throws Error: "do not set the name"
var ret = myDrone.name; // ret = "DJI"