0

I've been trying to write app in Angular 1.6 in ES6 and I wanted to use that fake HTTP Backend from ngMockE2E: https://docs.angularjs.org/api/ngMockE2E/service/$httpBackend

So I implemented those API calls like this in home.run.js:

mocks.$inject = ['$httpBackend'];

export default function mocks($httpBackend) {

  let users = [{'name': 'Eva'},{'name': 'David'}] 

  $httpBackend.whenGET('/users').respond(users);

  $httpBackend.whenPOST('/users').respond(function(method, url, data) {
    let user = angular.fromJson(data);
    users.push(user);
    return [200, user, {}];
  });

}

I also have index.js that looks like this:

import angular from 'angular';
import uirouter from 'angular-ui-router';
import mocke2e from 'angular-mocks/ngMockE2E';

import mocks from './home.run'
import routes from './home.config';
import HomeController from './home.controller';

export default angular.module('app.home', [uirouter, mocke2e])
  .config(routes)
  .controller('HomeController', HomeController)
  .run(mocks)
  .name;

And HomeController where I call that get method:

export default class HomeController {

 constructor($http) {
    this.$http = $http;
    this.users = this.getUsers();
 }

 getUsers() {
   this.$http.get('/users').then(function(response) {
     return response.data;
   });
 }

}

HomeController.$inject = ['$http']

Unfortunately getUsers() method in controller keeps returning undefined instead of users from response.data, even after trying different approaches.

Is someone able to figure out where have I messed up?

alobster
  • 38
  • 1
  • 5

1 Answers1

0

You're missing a return in getUsers()

export default class HomeController {

 constructor($http) {
    this.$http = $http;
    this.users = this.getUsers();
 }

 getUsers() {
   return this.$http.get('/users').then(function(response) {
     return response.data;
   });
 }

}
Delapouite
  • 9,469
  • 5
  • 36
  • 41