2016-06-17 4 views
1

私はいくつかのSequelize(JS ORM)コードでいくつかの統合テストを書いています。ほとんどのSequelize関数呼び出しはPromiseを返しますが、これはあまり働いていません。以下のテストケースを書く明確な方法はありますか?連鎖した約束を処理する明確な方法はありますか?

it('can add a membership to a user, and user will receive membership.', function() { 
return db.Sequelize.Promise.join(

    User.create({ firstName: 'foo', lastName: 'bar', 
    identifier: 'foobar', password: 'whatever', }), 

    Membership.create({ displayName:'Iron Maiden',role:'somerole' }), 

    // This is the part I'd like to improve the clarity of, 
    // if possible. 
    function(expectedUser, membership) { 
    return membership.setUser(expectedUser).then(
     function(updatedMembership) { 
     return updatedMembership.getUser().then(
      function(actualUser) { 
      return assert.equal(actualUser.id, expectedUser.id); 
      }) 
     }) 
    }) 
}); 
+2

この記事は本当に約束を助け、そしてあなたの問題を扱う:http://taoofcode.net/promise-anti-patterns/。 – Paul

答えて

2
function(expectedUser, membership) { 
    return membership.setUser(expectedUser) 
     .then(function(updatedMembership) { 
      return updatedMembership.getUser(); 
     }) 
     .then(function(actualUser) { 
      return assert.equal(actualUser.id, expectedUser.id); 
     }); 
}); 
関連する問題