Javascript Grunt angularJs项目,不依赖后端';s数据

Javascript Grunt angularJs项目,不依赖后端';s数据,javascript,unit-testing,angularjs,web-applications,gruntjs,Javascript,Unit Testing,Angularjs,Web Applications,Gruntjs,我用angular generator创建我的应用程序 有时我应该在创建后端之前为我的应用程序添加一些功能。我使用$httpBackend来模拟数据,下面是我使用的简单代码: e2e mocks.js angular.module('e2e-mocks', ['ngMockE2E']) .run(function ($httpBackend, OffersMock, RewardsMock) { // Mock list of offers $httpBackend.when

我用angular generator创建我的应用程序

有时我应该在创建后端之前为我的应用程序添加一些功能。我使用$httpBackend来模拟数据,下面是我使用的简单代码:

e2e mocks.js

angular.module('e2e-mocks', ['ngMockE2E'])
  .run(function ($httpBackend, OffersMock, RewardsMock) {
    // Mock list of offers
    $httpBackend.whenGET('api/offers').respond(OffersMock.get());
    // Mock list of rewards
    $httpBackend.whenGET('api/rewards').respond(RewardsMock.get());

    // For everything else, don't mock
    $httpBackend.whenGET(/^\w+.*/).passThrough();
    $httpBackend.whenPOST(/^\w+.*/).passThrough();
  });

angular.module('app').requires.push('e2e-mocks');
如您所见,若我将此脚本添加到web页面,则不再需要使用后端服务器获取数据。我正在从OffersMock服务获取数据。我在测试中也使用此服务

问题在于路径。 以下是我的文件结构:

    .
    |____app
    | |____index.html
    | |____scripts
    | | |____app.js
    | | |____controllers
    | | | |____main.js
    | | | |____OffersCtrl.js
    | | |____services
    | | | |____OffersService.js
    | |____styles
    | | |____main.scss
    | |____views
    | | |____offers.html
    | | |____rewards.html
    |____karma.conf.js
    |____test
    | |____backend
    | | |____e2e-mocks.js
    | |____mock
    | | |____OffersMock.js
    | | |____RewardsMock.js
    | |____spec
    | | |____controllers
    | | | |____OffersController.js
    | | |____services
    | | | |____OffersService.js
我无法将我的e2e mocks.js文件添加到index.html,因为应用程序文件夹是我的web应用程序的根目录。如果将测试文件夹移动到应用程序文件夹,则可以在生产服务器中查看我的所有测试

问题是: 我如何在开发和部署应用程序时向应用程序添加一些模拟脚本,而不必手动从构建的应用程序中删除测试代码


你知道怎么做吗?也许你知道它的一些模式或者你个人的最佳实践?任何建议都是有用的。谢谢:)

如果您对本地模拟使用特定的命名模式,则可以在生成过程中使用Grunt的命名模式排除这些文件

例如,如果您有如下配置:

//from the sample gruntfile    
concat: {
  options: {
    separator: ';'
  },
  dist: {
    src: ['src/**/*.js'],
    dest: 'dist/<%= pkg.name %>.js'
  }
}
(最小的)缺点是,对于可能错误地将本地开发模拟移动到部署目标的每个Yeoman任务,您都需要这样做

concat: {
  options: {
    separator: ';'
  },
  dist: {
    src: ['src/**/*.js', '!src/**/*-mymocks.js'],
    dest: 'dist/<%= pkg.name %>.js'
  }
}