我正在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();
});
答案 0 :(得分:1)
我将文件放在ember-cli项目中的public / tests / testFiles下,并将其与dist文件夹中已有的“tests”目录合并。我还将我的url更改为tests / testFiles / exceltest.xls
我不确定这是不是这样做的正确方法。
答案 1 :(得分:0)
这是解决问题的明智方法。我看到的一个问题是,您将测试文件引入了生产资产。您可以有条件地导入测试资产。首先,在您的项目目录中创建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
。我曾尝试在应用程序的fixtures
目录中创建tests/
文件夹,但无法导入。