在es6中监视/模拟超类方法

时间:2016-02-09 23:32:07

标签: javascript angularjs unit-testing ecmascript-6

下面是一些例子,但是要明白我的问题......

超级课程:

class Parent {
  constructor(a) {
    this._a = a;
  }

  doSomething() { ... implementation... }
}

子类:

class Child extends Parent {
  constructor() {
    super('a');
  }

  doSomethingElse() { return super.doSomething(); }
}

我在Angular中使用这些类,所以Parent类是DI提供给提供Child类的工厂,如下所示:

 function ChildDeps(Parent) {
     return class Child extends Parent {
          ... Child class implementation here ...
     };
 }

 ChildDeps.$inject = ['Parent']

天真地,我在每个条款之前首先尝试了类似的东西:

beforeEach(module($provide => {
  parent = {
    doSomething: jasmine.createSpy('parent.doSomething')
  };
  Parent = jasmine.createSpy('Parent').and.returnValue(parent);
  $provide.value('Parent', Parent);
}));

但这不起作用......说间谍父母'从来没有打过电话。

目前正在使用茉莉花/业力进行测试。怎么可以嘲笑/谍超级课程,这样我就可以对父母的课程做出什么样的期待?调用构造函数并调用super.doSomething函数?

谢谢!

0 个答案:

没有答案