我可以用Sinon.JS制作一个“漂亮的模拟器”吗?

时间:2014-12-04 19:07:15

标签: javascript unit-testing mocking sinon

这是一个假设的Mocha测试,用于验证ObjectUser#useObject调用Object#callMe

describe('ObjectUser', function() {
  describe('#useObject', function() {
    it('calls `callMe`, maybe', function(done) {

      var objectMock = { callMe: sinon.spy() };
      new ObjectUser().useObject(objectMock).done(function() {
        expect(objectMock.test).to.have.been.calledOnce
        done();
      });

    });
  });
});

在这个测试中,我创建了一个模拟对象,用Sinon.JS间谍替换了我想测试的方法;我将模拟传递给我正在测试的方法;并且我使用chai-sinon验证了间谍被调用一次。

但是,当TypeError尝试调用ObjectUser#useObject上的方法(让我们称之为object)时,Object#log的测试失败并且undefined在我的模拟中未定义。

有没有方便的方法来制作一个“漂亮的模拟”,例如,用function() {}替换TypeError方法,以避免测试失败undefined s而不用

  1. 不得不用不相关的实施细节污染测试本身?或
  2. 在拨打电话之前,必须使用{{1}}支票污染主叫代码吗?

0 个答案:

没有答案