AngularJS $resource参数使用下划线

18 浏览
0 Comments

AngularJS $resource参数使用下划线

我有以下资源:

angular.module('resources.venue', ['ngResource'])
  .factory('Venue', function($resource) {
    return $resource('/venue/:id', { id: '@_id' },{ update: { method: 'PUT' } });
  });

我像这样进行测试:

describe('Venue Resource', function() {
  var Venue, $httpBackend;
  var id = '123456789012345678901234';
  beforeEach(module('resources.venue'));
  beforeEach(inject(function(_Venue_, _$httpBackend_) {
    Venue = _Venue_;
    $httpBackend = _$httpBackend_;
  }));
....
  it('should get one venue', function() {
    $httpBackend.expectGET('/venue/' + id).respond();
    var obj = Venue.get({ "id": id });   // 如果更改为{ "_id": id }会出错
    $httpBackend.flush();
  });
  it('should put venue', function() {
    var obj = new Venue({ "_id": id });  // 如果更改为{ "id": id }会出错
    $httpBackend.expectPUT('/venue/' + id, { "_id": id }).respond();
    obj.$update();
    $httpBackend.flush();
  });
....

就像我评论的那样,在get测试中,如果将"id"属性重命名为"_id",会出现错误:

Error: Unexpected request: GET /venue?_id=123456789012345678901234
Expected GET /venue/123456789012345678901234

而在put测试中,如果将"_id"属性重命名为"id",会出现:

Error: Unexpected request: PUT /venue
Expected PUT /venue/123456789012345678901234

我有什么遗漏的吗?我试图寻找有关Angular如何处理带有下划线的参数的文档,但没有找到任何相关的信息。

0