我正在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
文件夹,但无法将其导入。