JS如何测试私有文件,但根本无法修改文件

时间:2018-08-15 11:53:27

标签: javascript sinon chai teaspoon

我在(document).ready下有一个JS脚本,我的CTO要求我编写一个测试,该测试通过全局变量var reportId = document.getElementById("report_id").value;上的值,并比较预期的结果。他说我根本无法修改源代码。他说有可能,但我不知道如何。我必须传递必须由此脚本处理的结果,然后比较预期结果。

JS:

$(document).ready(function() {

  var resultsLoaded = false;
  var reportId = document.getElementById("report_id").value;
  var resultsTable;

  spAddSpinner("#running");
  getStatus();

  function statusTimeout() {
    setTimeout(function(){
      getStatus();
    }, 10000);
  }

  function getResults() {
    if (resultsLoaded) {
      resultsTable.ajax.reload();
    } else {
      resultsTable = $('#results').DataTable( {
        "ajax": {
          "url": "/ad_hoc_reports/" + reportId + "/run_results",
          "dataSrc": "data"
        },
        "pageLength": pageLength,
        "lengthMenu": pageSettings
      });
      resultsLoaded = true;
    }
  }

  function getStatus() {
    $.ajax({
      url: "/ad_hoc_reports/" + reportId + "/run_progress",
      type: "GET",
      dataType: 'json',
      error: function (xhr, status, error) {
        displayError("An error has occurred obtaining the run status.");
      },
      success: function(result){
        if (!result.running) {
          getResults();
          spRemoveSpinner("#running");
        } else {
          statusTimeout();
          // Just load the table once to set up page nicely.
          if (!resultsLoaded) {
            getResults();
          }
        }
      }
    });
  }

}); 

我必须通过的是YAML报告,该报告称为reportId。该脚本将对其进行处理并获得结果,因为结果应该类似于以下内容:

var run_results = {
    "columns": [{"data": "Form Identifier"}, {"data": "Form Version"}, {"data": "Question Text"}, {"data": "Mapping"}, {"data": "Submission"}, {"data": "C Code"}],
    "data": [["CDASH DEMO", "0.0.1", "Units", "HEIGHT_VSORRESU", "in", "C48500"],
      ["CDASH DEMO", "0.0.1", "Pulse Unit", "PULSE_VSORRESU", "beats/min", "C49673"],
      ["CDASH DEMO", "0.0.1", "Blood Pressure Unit", "BP_SYSBP_ORRESU", "mmHg", "C49670"],
      ["CDASH DEMO", "0.0.1", "Blood Pressure Unit", "BP_DIABP_VSORRESU", "mmHg", "C49670"]]
  };

因此,上面的JSON是处理YAML文件后的结果。 该信息包含在一个YAML文件中,该文件是一个报表,并且getResults以JSON格式获取该信息。 所以我要比较的是,如果YAML数据得到了很好的处理,并且输出与JSON中的输出一样。

我需要思路和示例。

我正在考虑使用Sinon spy的方法,但不知道。

0 个答案:

没有答案