茉莉花(摩卡)嵌套"它"测试

WHI*_*LOR 16 mocha.js mongoose node.js jasmine

我试图测试后续创建/删除项目(通过mongoose在mongoDB中).

创建的问题是异步并且它在回调函数中返回已创建项的ID,我需要这个ID来删除创建的项,所以我尝试了下面的代码用于mocha(以不同的方式)但它不起作用.

describe('Item Model', function(){

  it('should be able to create item', function(done){
    var item = new Item({name: {first: "Alex"});
    item.save(function(err, data){

      it('should be able to deleted created item', function(done){                    
        Item.delete({_id: data.id}, function(err, data){
        done(err);
        });
      });

    })
  });

});
Run Code Online (Sandbox Code Playgroud)

这样的测试可以用摩卡或茉莉花来实现吗?

小智 8

我会有两个测试.一个是测试插入,一个是测试删除.

应该在coffeescript中看起来像这样

describe 'Item model', () ->
   item = ''
   before (done) ->
      item = new Item {name: {first: "Alex"}}
      done
    describe 'When inserting Item', () ->
        before (done) ->
            item.save done
        it 'should have been insterted' ->
            #CHECK HERE IT IF IT IS INSERTED

    decribe 'when deleting', () ->
        before (done) ->
            item.save (err,data) ->
                return done err if err
                Item.delete {_id: data.id}, done
        it 'should have been deleted' ->
            #CHECK HERE IT IF IT IS Deleted
Run Code Online (Sandbox Code Playgroud)

  • 使用CoffeeScript答案回答JavaScript问题是一种不好的做法.我确实喜欢CoffeeScript,但并非所有JS程序员都能阅读和理解它. (51认同)
  • 如果嵌套的东西可以完成,我仍然会喜欢. (16认同)
  • CoffeeScript不是JS.就像ClojureScript不是JS一样.就像C不是汇编程序一样.但是,这实际上是一个jasmine/mocha问题,你可以用预处理器语言编写jasmine/mocha测试,所以应该没问题. (5认同)