使用Sinon在Mocha中读取断言控制台消息

时间:2017-06-11 12:11:30

标签: javascript node.js sinon

我正在尝试测试一个Web组件。如果设置了无效的属性值,此Web组件会向控制台写入警告消息。目前,我有以下内容:

import { expect } from 'chai';
import { mount } from 'avoriaz';

import MyComponent from '../src/my-component.vue';

const sinon = require('sinon');

describe('my-component.vue', function() {
  let sandbox = null;

  beforeEach(function() {
    sandbox = sinon.sandbox.create();
    sandbox.stub(console, 'warn');
  });

  afterEach(function() {
    sandbox.restore();
  });

  it('should show warning message in console', function() {
    let wrapper = mount(MyComponent, { propsData: { start:-1 } });  // start has to be positive.
    let result = sandbox.calledWith('WARNING!');
    expect(result).to.equal(true);
  });
});

当我运行这些测试时,我会抛出以下异常:

sandbox.calledWith is not a function

然后我尝试使用sandbox.fakes.calledWith。然后我收到了这个错误:

sandbox.fakes.calledWith is not a function

我做错了什么?如何测试是否将控制台消息写入控制台行?问题是,如果我删除sandbox.stub(console,'warn');一行,我可以看到写入实际控制台窗口的行。所以我知道它正在生成(如预期的那样)。我只是无法弄清楚如何测试它。

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

你所拥有的位

let result = sandbox.calledWith('WARNING!');

没有意义,应该是

let result = console.warn.calledWith('WARNING!');