EmberJS测试需要数据文件

时间:2015-08-05 03:36:33

标签: ember.js ember-cli qunit

我正在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();
});

2 个答案:

答案 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/文件夹,但无法导入。