我有類似的幾行代碼:模擬文件輸入
jQuery('.js-img-input').on('change', handleNewFiles);
var handleNewFiles = function(event) {
var fileList = event.target.files;
loadFileList(fileList);
};
var loadFileList = function(fileList) {
jQuery(fileList).each(function(key, file) {
readFileAsync(file);
});
}
var readFileAsync = function(file) {
var fileReader = new FileReader();
fileReader.addEventListener("load", function(event) {
file.result = event.target.result;
saveFile(file);
});
fileReader.readAsDataURL(file);
};
所有的方法都是一個jQuery函數內部私人,我不whant使「handleNewFiles」公衆只爲測試目的。
我很樂意與這樣的事情來測試這些行:
it('should create a fileReader', function(){
spyOn(window, 'FileReader').and.returnValue({
addEventListener: function(){},
readAsDataURL: function(){}
});
jQuery('.js-img-input').trigger('change');
expect(window.FileReader).toHaveBeenCalled();
});
但我怎麼得到一些無效資料event.target.files?
Fix onChangeCallback({target {files:[1,2,3]}});請。你在那裏錯過了一個冒號。 它應該是:onChangeCallback({target:{files:[1,2,3]}}); – vullnetyy
添加冒號。謝謝! – Jakob