【问题标题】:Jasmine test to test javascript uploading files in web browserJasmine 测试在 Web 浏览器中测试 javascript 上传文件
【发布时间】:2017-01-04 15:40:43
【问题描述】:

我想为javascript 程序创建一个jasmine 测试,该程序在网络浏览器中上传文件并检查文件是否有内容。代码如下:

function test(filePath) {
  var file = filePath.files[0];
  var reader = new FileReader();
  reader.onloadend = () => {
    if(reader.result == "") {
      display.innerText = 'has nothing';
    } else {
        display.innerText = 'has something';
    }
  }
  reader.readAsText(file);
}

window.onload = () => {
  var filePath = document.getElementById('filePath');
  var display = document.getElementById('display');

  filePath.addEventListener('change', () => {
    test(filePath);
  });
}
<input id="filePath" type="file">
<pre id="display"></pre>

如何使用示例文件编写jasmine 测试?

【问题讨论】:

    标签: javascript html jasmine ecmascript-6


    【解决方案1】:

    这里基本上需要mock文件路径,假设文件已经上传,

    var mockPath = "/aaa/bbb/ccc.doc"; //本地文件路径

    && 从规范文件中调用测试函数

    && 期望通过验证阅读器对象来断言文件是否有一些文本。

    注意:这里还需要模拟 reader 对象。

    【讨论】:

    • 如果我使用文件路径作为函数的参数,则不显示任何内容,这意味着文件输入不是文件路径的字符串;那么如果文件输入是什么对象呢?
    • 如果是字面量,你需要在 Javascript 看到反斜杠之前对其进行转义;没有办法解决这个问题。 var newpath = 'file:///C:\\xxxx\\yyyy\\zzzz.txt';新路径.replace(/\\/g,"\\\\");如果路径不作为字符串参数,请尝试此操作
    • 它不起作用。你能解释一下替换功能吗
    • 谁能帮忙
    【解决方案2】:

    尝试这个传递路径并使用转义函数作为路径

    var str="/Users/zzz/Desktop/testFile.txt";
    var str_esc=escape(str);
    document.write(str_esc + "<br>");
    function readData(filePath){
       console.log("<br>"+filePath);
       var reader = new FileReader();
    }
    

    https://jsfiddle.net/92698vka/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-09
      • 2014-10-25
      • 2016-07-13
      相关资源
      最近更新 更多