如何使用mocha测试私有函数?

时间:2018-04-30 07:10:07

标签: javascript jquery unit-testing mocha chai

由于我是单元测试的新手,我想测试我的javascript代码非常混乱..我真的想要一些帮助谁可以告诉我的问题的解决方案。??

if (!Notification) {
 Notification = {};
  else {
    if (typeof Notification != "object") {
      throw new Error(" already exists ");
    }
  }
 Notification.admin = function() {
    var res = {};
    var prevent = "";

    var DefaultValue = function(ans, type, commnon, status) {
      var notify = type.concat(common);
      if ($("#method").val() == "false" && type == "Text") {
        if (status) {
          return data = '<label class="checkbox-label"><input data-role="ux-checkbox" type="checkbox" disabled="disabled" data-type="' + notify + '" class="grid-checkbox">&nbsp;&nbsp</label>';
        } else {
          return data = '<label class="checkbox-label">' + '<span class="no-checkbox-label" >' + "-" + '</span>' + '</label>';
        }
      } else if (status) {
        if (ans) {
          return data = '<label class="checkbox-label"><input data-role="ux-checkbox" checked=checked type="checkbox" data-type="' + notify + '" class="grid-checkbox ">&nbsp;&nbsp</label>';
        } else {
          return data = '<label class="checkbox-label"><input data-role="ux-checkbox" type="checkbox" data-type="' + notify + '" class="grid-checkbox">&nbsp;&nbsp</label>';
        }
      } else {
        return data = '<label class="checkbox-label">' + '<span class="no-checkbox-label" >' + "-" + '</span>' + '</label>';
      }
    };
    this.init = function() {


    };}; Notification.Obj = new Notification.admin();

  $(document).ready(function() {

Notification.Obj.init();

  });

这是我的私人功能,我想进行单元测试,因为我正在使用mocha和chai ..

我无法对此功能进行单元测试

1 个答案:

答案 0 :(得分:1)

您不会为私人方法编写测试。

公共方法是类的公共接口。从外面调用的那些。私有方法是您不关心的实施细节。

单元测试的范围是测试一个类的所有公共方法。 (不,在课堂上公开私人方法不是解决方案。)

将私有方法的实际业务部分重构为新服务。该服务将具有通过公共方法提供的功能。您可以测试该服务。在您当前的服务中,您可以注入该服务并使用其功能。

话虽如此:你只能对没有副作用的单元测试方法以及你可以嘲笑它的依赖性(依赖注入)。