我发现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;
  });
});

10-05 20:44
查看更多