我是Javascript的新手,特别是EmberJS和Ember CLI。我试图找出在基于Ember CLI的项目中管理模拟数据的最佳实践。我现在在0.1.14 EmberCLI。
根据Ember CLI文档,http-mock是为Ember Data模型提供模拟数据的首选方式。所以我使用生成的http-mock并添加了一些测试数据。
var testData = [
...
];
module.exports = function(app) {
var express = require('express');
var todosRouter = express.Router();
todosRouter.get('/', function(req, res) {
res.send({
"todos": testData
});
});
然后我发现http-mock在集成期间不起作用,所以我添加了Pretende。
import Ember from 'ember';
import { test } from 'ember-qunit';
import Pretender from 'pretender';
import startApp from '../helpers/start-app';
var App;
var server;
var testData = [
...
];
module('An Integration test', {
setup: function() {
App = startApp();
server = new Pretender(function(){
this.get('/api/todos', function(request){
return [ 200, {"Content-Type": "application/json"},
JSON.stringify({'todos': testData) ];
});
});
},
teardown: function() {
...
}
});
test('3 items loaded at startup', function() {
...
});
http-mock和集成测试都运行良好,然后我尝试将测试数据放在一个单独的模块中,以便可以共享它们。问题是集成测试使用ES6样式模块导入,http-mock使用CommonJS样式模块定义,我不知道如何将它们组合到项目中。
如果我将数据构建到ES6模块中,
var mockData = [
...
];
export default {
all: mockData
};
它适用于集成测试,但http-mock会抱怨意外的保留字“export”。如果将它转换为CommonJS样式的module.export,那么我无法在集成测试中看到数据。
现在问题:
我被困在这里,评论,建议和代码示例非常感谢。
答案 0 :(得分:1)
我不确定,但我认为this Ember CLI addon, called ember-cli-mirage
可能会做你正在寻找的事情。我还没有自己使用它,但我听说过它的好处,它似乎照顾了你想要使用模拟服务器进行开发和测试而不需要保留两套灯具的情况。