Ich benutze das Nf-Datei-Upload-Modul, um eine Datei auf mein Backend hochzuladen. Der Code für das Hochladen der Datei lautet wie folgt:Einheit Testdatei Upload in eckig
$scope.upload = function (file) {
console.log(file)
Upload.upload({
url: 'http://localhost:3000/fileupload',
data: {file: file[0]},
}).then(function (resp) {
console.log('Success ' + resp.config.data.file.name + ' uploaded. Response: ' + resp.data);
}
Das Hochladen der Datei funktioniert hervorragend. aber wenn ich meine Komponententest erstellen:
it('should send file to backend for processing', function(){
var mockFile = {file:[{"name":"file.bin", "size":1018, "type":"application/binary"}]};
httpBackend.when('POST', 'http://localhost:3000/fileupload').respond(200, {"filePath":"http://localhost:3000/uploads/file.txt"});
scope.upload(mockFile);
httpBackend.flush();
});
Ich erhalte eine Fehlermeldung:
TypeError: undefined is not an object (evaluating 'resp.config.data.file.name')
Was mache ich falsch?
Hinzufügen eines Mock-Objekts wie folgt in dem Beispiel unten führt immer noch zu einem Syntaxfehler. – machinebit
Da Ihre console.log auch 'resp.data' verwendet, fügen Sie' data' in Ihrem Objekt hinzu. {config: {data: {datei: {name: 'ein name'}}}, data: {}} –
httpBackend.when ('POST', 'http: // localhost: 3000/fileupload') .respond (200, { "config": { "data": "file": { "name": "http: // localhost: 3000/uploads/file.txt"}} }, "data": {}); hinzufügen, dass immer noch viele 'nicht behebbare Syntaxfehler' – machinebit