Wie sollte ich vermeiden, stubbing Eigenschaften mit Sinon.js
Habe ich entdeckt, dass Sinon lässt Sie nicht stub Eigenschaften, nur Methoden. Ich versuche, herauszufinden, wie man mit/umarmen diese.
Ich habe den folgenden code:
var Player = {
addPoints: function(points) {
this.score += points;
},
score: 0
}
var Game = {
setPlayers: function(players) {
this.players = players;
},
over: function() {
return this.players.some(function(player) {
return player.score >= 100;
});
},
}
Hier ist ein test ich schrieb:
describe("Game", function() {
it("is over if a player has at least 100 points", function() {
var game = Object.create(Game);
player = Object.create(Player);
game.setPlayers([player]);
player.addPoints(100);
game.over().should.be.true;
});
});
Es fühlt sich falsch für mich, um zu gehen, und rufen Sie addPoints()
auf Player
wenn ich Teste Game
. Mein erste Instinkt war zu stub Player.points
, aber ich kann das nicht tun, weil Sinon nur stubs Eigenschaften, nicht die Methoden.
Wie soll ich darüber nachdenken?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich per E-Mail die SinonJS mailing-Liste, und der Autor schrieb zurück:
Sie nicht haben, um stub -
game.points
einfach. So können Sie eine einfache mock fürGame
, die nur eineobject
holding ein Spion für diesetPlayer
Methode. und dann können Siescore
im test, was immer Sie wollen.