我发现Sinon不允许您仅对方法进行属性 stub 。我试图弄清楚如何处理/拥抱这个问题。
我有以下代码:
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;
});
},
}
这是我写的测试:
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;
});
});
在我测试
addPoints()
时,必须进入并在Player
上调用Game
对我来说是错误的。我的最初本能是对Player.points
进行 stub ,但是我不能这样做,因为Sinon仅对属性而不对方法进行 stub 。我应该如何考虑呢?
最佳答案
我通过电子邮件发送了SinonJS邮件列表,作者回信:
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.score = 100;
game.over().should.be.true;
});
});