Guten Tag,
Ich versuche gerade für eine Webanwendung, dem User zu ermöglichen, eigene Dateien hochzuladen und auswerten zu lassen...
Das funktioniert auch prima, aber dies zu testen gestaltet sich schwierig.
Es muss ein JavaScript Unit test her, in Jasmine syntax. (Das Snippet basiert teilweise auf Angular (Methodenaufruf))
Jasmine-Test:
Ich versuche gerade für eine Webanwendung, dem User zu ermöglichen, eigene Dateien hochzuladen und auswerten zu lassen...
Das funktioniert auch prima, aber dies zu testen gestaltet sich schwierig.
Es muss ein JavaScript Unit test her, in Jasmine syntax. (Das Snippet basiert teilweise auf Angular (Methodenaufruf))
HTML:
<input type="file" name="file" id="fileinput" onchange="angular.element(this).scope().uploadFile(this.files)" />
Code:
$scope.uploadFile = function (files) {
try {
var message = "",
file = files[0],
filereader = new FileReader();
filereader.onload = (function (theFile) {
return function (result) {
var data;
try {
// TODO test
console.log("filereader onload called");
var string = window.atob((result.target.result).replace("data:application/octet-stream;base64,", "").replace("data:;base64,", ""));
data = JSON.parse(string);
localStorage.setItem("configCache", string);
$scope.renderData(data);
} catch (e) {
// TODO test
console.error("Error: " + e);
}
};
})(file);
filereader.readAsDataURL(file);
document.getElementById('fileinput').addEventListener('change', readSingleFile, false);
} catch (e) {
console.error("Error: " + e);
}
};
Jasmine-Test:
Code:
describe('$scope.uploadFile method testing', function () {
var eventListener;
beforeEach(function () {
eventListener = jasmine.createSpy();
spyOn(windowMock, "FileReader").and.returnValue({
addEventListener: eventListener,
onload: function (file) {
return true;
}
});
});
it("should set the file contents correctly", function () {
$_scope.uploadFile(["data/testData.json"]);
expect(windowMock.FileReader).toHaveBeenCalled();
expect(windowMock.FileReader.readAsDataURL).toHaveBeenCalled();
if (windowMock.FileReader.readAsDataURL) {
console.log("echo!");
}
windowMock.FileReader.onload();
});
});