总的来说,我是 Javascript 的新手,尤其是 EmberJS 和 Ember CLI。我试图弄清楚在基于 Ember CLI 的项目中管理模拟数据的最佳实践是什么。我现在使用 0.1.14 EmberCLI。
根据 Ember CLI 文档,http-mock 是为 Ember 数据模型提供模拟数据的首选方式。所以我使用生成的 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,那么我将无法在集成测试中看到数据。
现在问题:
- 我认为如果 Broccoli 将 ES6 模块“编译”为 CommonJS 格式,它应该可以与 http-mock 一起使用,但我不知道该怎么做。这是正确的前进方向吗?如何做?
- 我必须在同一个项目中同时使用 http-mock 和 Pretender 吗?我可以将一个用于开发和集成测试吗?
我被困在这里,非常感谢评论、建议和代码示例。
最佳答案
我不确定,但我认为 this Ember CLI addon, called ember-cli-mirage
可能会做你正在寻找的东西。我自己还没有使用过它,但我听说过关于它的好消息,它似乎可以解决你想使用模拟服务器进行开发和测试而无需保留两套固定装置的情况。
关于javascript - 带有 http-mock 和伪装者的 Ember CLI,如何管理模拟数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27488451/