Ich habe unterhalb der Fabrik, wo es eine Abhängigkeit von der privaten Funktion gibt. Die private Funktion ist in $ http.get (url) .successKomponententest private Funktion in angularjs Fabrik innerhalb dann Funktion
define(['underscore'], function (_) {
"use strict";
function empConfigFactory($http, $q, $log, configManager, empConfig) {
var empSal = null;
//how do i test the below method.
function calculateEmpSal() {
var deferred = $q.defer();
emp = empConfig;
if (emp.designation === "Director") {
empSal.Salary = "soem value";
}
else if (emp.designation === "CoDirector") {
empSal.Salary = "soem value";
}
deferred.resolve(empSal);
return deferred.promise;
}
return {
"get": function() {
var url = "http://someUrl";
var deferred = $q.defer();
$http.get(url).success(function (data) {
empSal = data;
if ("someCondition") {
//dependency on below function
calculateEmpSal().then(function() {
deferred.resolve(empSal);
}, function() {
deferred.resolve(empSal);
});
} else {
deferred.resolve(brand);
}
})
.error(function (err) {
console.log(err);
});
return deferred.promise;
}
};
}
return ['$http', '$q', '$log', 'empModule.config.configManager', 'empModule.remote.empConfig', empConfigFactory];
});
Ich bin mir bewusst, dass wir die private Funktion nicht testen können. Ich möchte nur wissen, wie man in diesem Szenario mit den Testfällen umgeht. Können wir eine private Funktion spotten
Meine Meinung: Sie können es nicht direkt testen. Sie sollten das gesamte Modul testen, da Sie den Code einfach von der inneren Funktion an die Stelle verschieben können, an der er verwendet wird. Aber einen Moment ... [es gibt schon Fragen zu diesem Thema - hast du schon gesucht? (Http://stackoverflow.com/search?q= [Jasmine] + Test + private + Funktion) vorher? –