Ember CLI http-mock为Addon

时间:2014-10-31 16:19:59

标签: ember.js ember-cli ember-addon

我使用Ember CLI的http-mock功能来模拟REST API端点,但我想在多个Ember CLI应用程序中使用它。我认为插件是一个很好的解决方案,但我似乎无法让它工作。 Ember Addon是否支持http-mock?

这就是我的所作所为。

上创建了一个添加项
$ ember addon my-http-mock

然后我在插件中创建了一个简单的测试端点

$ ember g http-mock users

将它发布到我的github存储库之后,我将它导入了这样的Ember CLI项目,如package.json

"dependencies": {
    "my-http-mock": "git://github.com/git-username/my-http-mock"
}

在安装它之后,我运行了我的应用程序,但转到http://localhost:4200/api/users没有进入API端点,而是尝试加载Ember应用程序。

有没有办法在多个应用程序中使用http-mock?

1 个答案:

答案 0 :(得分:3)

您需要让您的插件实现serverMiddleware,并且您可以将中间件或路由添加到在使用ember-cli应用程序中运行的http-mock。

Advanced Addon customization in ember-cli docs

该钩子传递了一个config对象,该对象在config.app上有快递应用程序实例。然后,您可以添加您想要做的任何事情。如果您在插件中使用生成的http-mock,它看起来像这样

{
  name: 'my-http-mock',
  serverMiddleware: function(config) {
    // To require ALL mocks from your addon
    var server = require('./server');
    server(config.app);

    // To require individual mocks
    var users = require('./server/mocks/users');
    users(config.app);
  }
}

这是未经测试的代码但应该有效。要求所有的模拟可能会以一种奇怪的方式发生冲突,因为它添加了bodysarser中间件和connect-restreamer,如果你的应用程序已经有来自它的本地http-mock,它可能已经包含了。试试吧! :)

注意:这个答案是关于使用ember-cli 0.1.2