AngularJS中等效的Ember夹具适配器

时间:2014-05-30 16:56:05

标签: javascript angularjs ember.js development-environment

有人在AngularJS中实现类似ember fixture adapter的内容,以便在开发过程中模拟后端吗?

我看到AngularJS有$httpBackend用于进行单元测试,但这可以像ember fixture适配器一样用来运行实际的应用程序吗?

如果当前没有任何内容可用,那么如何以一种允许在灯具和实际后端之间轻松转换的方式实现这一点(对于dev和prod环境)?

2 个答案:

答案 0 :(得分:1)

我个人更喜欢使用mockjax(https://github.com/appendto/jquery-mockjax)。

$.mockjax({
    url:  '/colors',
    dataType: 'json',
    responseText: {
    colors:[
      {
        id: 1,
        color: "red"
      },
      {
        id: 2,
        color: "green"
      },
      {
        id: 3,
        color: "blue"
      }
     ]
  }
});

这是一个余烬的例子,但它的角度完全相同。

http://emberjs.jsbin.com/OxIDiVU/73/edit

答案 1 :(得分:0)

事实证明,AngularJS有两个名为$ httpBackend的服务;一个用于单元测试,the other one用于e2e测试或"无后端"发展。因此,您可以执行以下操作(改编自AngularJS docs

var myApp = angular.module('myApp', []);

//...

var myAppDev = angular.module('myAppDev', ['myApp', 'ngMockE2E']);
myAppDev.run(function($httpBackend) {
  phones = [{name: 'phone1'}, {name: 'phone2'}];

  // returns the current list of phones
  $httpBackend.whenGET('/phones').respond(phones);

  // adds a new phone to the phones array
  $httpBackend.whenPOST('/phones').respond(function(method, url, data) {
    var phone = angular.fromJson(data);
    phones.push(phone);
    return [200, phone, {}];
  });
  $httpBackend.whenGET(/^\/templates\//).passThrough();
  //...
});

angular.bootstrap ($('html'), ['myApp', 'myAppDev']);

确保包含对ng-mock库的引用。

Here是一个简化的工作演示。