从Jasmine重置方法的执行上下文

时间:2019-01-17 12:16:38

标签: javascript angular jasmine

我有现有服务,需要使用单元测试进行介绍。 无法处理以下情况:

const exampleVariable = 'test';

export class Class {
  testMethod() {
    if (!exampleVariable ) {
      throw Error('There is no exampleVariable!');
    }
  }
}

当发生错误时,如何更改'exampleVariable'的值以解决问题?

1 个答案:

答案 0 :(得分:0)

我认为这不可能进行单元测试。在此实现中,class方法依赖于外部状态(exampleVariable的值)来完成其工作。相反,最好将此数据作为方法参数传递:

export class Class {

  testMethod(exampleVariable) {

    if (!exampleVariable) {
      throw new Error('There is no exampleVariable!');
    }

  }

}

测试看起来像这样:

let myClass = new Class();

expect(myClass.testMethod(false)).toThrow(new Error('There is no exampleVariable!'))