在工厂测试功能

时间:2016-02-29 07:06:57

标签: javascript angularjs jasmine karma-jasmine

def login = deadbolt.SubjectNotPresent()() { authRequest =>
  Future {
    Ok(login(loginForm))
  }
}

我已经完成了这样的测试

.factory('Tag', function($window) {

  var Context = {};

  function reset() {
    return Context !== {} ? Context : {};
  }

  return{
    reset:reset
  };
})

是,这个测试是准确的,如果是,那么为什么我的测试覆盖率没有增加..

1 个答案:

答案 0 :(得分:0)

您正在调用假函数而不是真函数,因此实际函数中的代码永远不会被执行。

您的代码覆盖率工具仅标记实际命中的代码。

andCallFake用于模拟你不想测试的外部函数,当你实际测试的代码调用它时,你只需要一些模拟响应。

你的代码应真正致电...

Tag.reset()

现在,如果Tag.reset()调用另一个您不想测试的服务中的代码,那么您可以在该调用上使用callFake。 记住这是"单位"测试。 "单位"您要测试的代码是服务中的代码,而不是您服务之外的代码。