Vue测试报告器显示预期的抛出错误

时间:2018-10-06 08:59:32

标签: unit-testing vue.js mocha

我正在测试组件是否抛出错误,测试是否按预期通过,而报告程序仍输出抛出的错误。 有办法防止这种情况吗?我不想在测试输出中看到预期的错误。

应用程序是使用Vue CLI生成的,我使用与npm run test:unit相对应的vue-cli-service test:unit运行测试。

我尝试手动运行vue-cli-service,并根据-q链接的docs传递vue-cli-service test:unit --help和其他报告程序,它们似乎根本不起作用(没有安静的运行) ,没有其他记者)。

我正在使用摩卡咖啡/柴。

我组件的脚本

export default {
  props: {
    foo: Array,
  },
  mounted() {
    this.bar();
  },
  methods: {
    bar() {
      if(this.foo.length === 0) {
        throw new Error("Array is empty");
      }
    }
  }
}

测试

describe('Component'), () => {
  let localVue;
  beforeEach(() => {
    localVue = createLocalVue();
    localVue.use(Vuetify);
  });
  
  it('throws an error if array is empty', () => {
    const items = [];
    
    const params = {
      locaVue,
      propsData: { foo: items },
    };
    
    const msg = "Array is empty";
    
    // shows error in console both with this statement
    expect(shallowMount.bind(shallowMount, Component, params)).to.throw(msg);
    
    // and this statement
    expect(() => shallowMount(Component, params)).to.throw(msg);
  });
});

1 个答案:

答案 0 :(得分:0)

我以相同的方式,在测试输出中不喜欢一堆杂音。我要做的是暂时重新分配console.error,然后将其重新分配。试试:

// store a reference to the original function
const originalConsoleError = console.error;
// reassign to a no-op
console.error = () => {};
/** 
 * run tests
*/
// restore to aid in debugging further tests
console.error = originalConsoleError;