1

我在使用 ngDescribe 时遇到了链式规范的问题。第二个规范永远不会完成并超时。如果我注释掉第一个规范,则第二个规范成功完成。所以,我知道每个规范都是有效的并且有效。

这是两个规格的整个测试。



var baseNotes = window.__mocks__['base-data/notes'];
var baseUsers = window.__mocks__['base-data/users'];
var baseDepartments = window.__mocks__['base-data/departments'];

// Create object to describe all the mocks
var mock = {
  app: {
    // Mock out all required DB functionality
    LocalDb: {
      'service': {
        dbs: [
          {
            notes: true
          }
        ]
      },
      'getDbInfo': function($q) {
        return $q.when()
      },
      'allDocs': function($q) {
        return $q.when(baseNotes);
      },
      'putDoc': function($q) {
        var note = {};
        note._id = 'xyz123';
        console.log("Here is the note now");
        console.log(note);
        return $q.when(note);
      }
    },
    Users: {
      getUsers: function($q) {
        return $q.when(baseUsers)
      }
    },
    Departments: {
      getDepartments: function($q) {
        return $q.when(baseDepartments);
      }
    }
  }
};


ngDescribe
({
  name: 'Process Generic Notes Requests',
  modules: ['app'],
  // Must include $rootScope so that deps.step() is available
  inject: ['Notes', 'NoteFactory', '$rootScope'],
  mock: mock,

  tests: function(deps){

    beforeEach(function() {
      // Preload the service with notes
      deps.Notes.notes = baseNotes;
    });

    it('should refresh notes from db', function(done) {

      // remove the notes from the service
      deps.Notes.notes = [];

      expect(deps.Notes.notes.length).toEqual(0);

      deps.Notes.getNotes(true).then(
        function(result) {
          expect(result.length).toEqual(3);
          done();
        }
      );

      deps.step();

    });


    it('should fetch notes from memory', function(done) {

      deps.Notes.getNotes().then(
        function(result) {
          expect(result.length).toEqual(3);
          done();
        }
      );

      deps.step();

    });

    it('should get specific note', function(done) {

      deps.Notes.getNote(baseNotes[0]._id).then(
        function(result) {
          expect(result._id).toEqual(baseNotes[0]._id);
          done();
        }
      );
      deps.step();

    });

    it('should get last note', function(done) {

      deps.Notes.getLastNote().then(
        function(result) {
          expect(result._id).toEqual('1436880052000-34lekd');
          done();
        }
      );
      deps.step();

    });

    it('should summarize notes', function() {

      var summary = deps.Notes.summarizeNotes();
      expect(summary.total).toEqual(3);
      expect(summary.finished).toEqual(2);
      expect(summary.remaining).toEqual(1);
      console.log("Done processing summarize at " + Date.now());

    });

  }
})({
  name: 'Process Update Note Requests',
  modules: ['app'],
  // Must include $rootScope so that deps.step() is available
  inject: ['Notes', 'NoteFactory', '$rootScope'],
  mock: mock,
  tests: function (deps) {

    var newNote;

    beforeEach(function () {
      // Preload the service with notes
      deps.Notes.notes = baseNotes;

      // Create a new note
      newNote = deps.NoteFactory.createNote();
    });

    it('should save a new note', function (done) {

      console.log("Starting save a note at " + Date.now());


      console.log("Here is the note about to be saved");
      console.log(newNote);

      deps.Notes.updateNote(newNote).then(
        function (response) {
          dump('Response from update note!');
          dump(response);
          expect(response._id).toEqual('xyz123');
          done();

        },
        function (error) {
          dump('Failed to update note!');
          dump(error);
          expect('good').toEqual('bad');
          done();
        }
      );

      deps.step();

    });
  }
});
4

0 回答 0