需要数据文件的EmberJS测试



我正在Ember-cli中编写一个测试,以测试我的类是否可以读取xlsx文件。但是,我不知道如何告诉Ember/qUnit将测试文件与测试一起导出到dist文件夹,以便我的测试在浏览器中运行时可以找到它。这是我的测试结果。但是它在执行时找不到"url",因为它没有将文件复制到dist文件夹。我如何告诉Ember复制测试文件?

import { module, test } from 'qunit';
import Ember from 'ember';
import XlsxParser from '../../../objects/sheetParsers/XlsxParser';
module('Unit | XLSX Parser');
test('it works', function(assert) {
  var sheetParser = XlsxParser.create();
  var done1 = assert.async();
  var url = "/testFiles/excelTest.xlsx";
  var oReq = new XMLHttpRequest();
  oReq.open("GET", url, true);
  oReq.responseType = "arraybuffer";
  oReq.onload = function(e) {
    var arraybuffer = oReq.response;
    /* convert data to binary string */
    var data = new Uint8Array(arraybuffer);
    var arr = new Array();
    for(var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);
    var binaryData = arr.join("");
    /* DO SOMETHING WITH workbook HERE */
    sheetParser.parseSheet(binaryData);
  }
  oReq.send();
  assert.ok("done");
  done1();
});

我将这些文件放在ember-cli项目的public/tests/testFiles下,并将其与dist文件夹中的"tests"目录合并。我还将url更改为tests/testFiles/exceltest.xls

我不确定这样做是否正确。

这是解决问题的明智方法。我看到的一个问题是您将测试文件引入到生产资产中。您可以有条件地导入测试资产。首先,在项目目录中创建vendor/fixtures。然后将以下内容添加到项目的ember-cli-build.js中:

const environment = EmberApp.env();
const isTest = environment === 'test';
if (isTest) {
    app.import('vendor/fixtures/my-test-file.csv', { type: 'test' });
}

这,然而,工作得很好,只会复制资产到dist/fixtures/时,ember build被调用的测试标志(--environment test),或当您运行ember test。我曾尝试在我的应用程序的tests/目录中创建fixtures文件夹,但无法将其导入。

最新更新