0

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

这就是我所做的。

创建了一个插件

$ ember addon my-http-mock

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

$ ember g http-mock users

将其发布到我的 github 存储库后,我将其导入到 package.json 中的 Ember CLI 项目中

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

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

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

4

1 回答 1

3

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

ember-cli 文档中的高级插件自定义

该钩子 get 传递了一个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);
  }
}

这是未经测试的代码,但应该可以工作。require all mocks 可能会以一种奇怪的方式发生冲突,因为它添加了 bodyparser 中间件和 connect-restreamer,如果您的应用程序已经包含来自本地 http-mock 的那些,它可能已经包含了这些中间件。不过试试看!:)

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

于 2014-10-31T16:34:08.310 回答