我在(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
的方法,但不知道。