2016-06-17 2 views
1

일부 Sequelize (JS ORM) 코드에 대해 일부 통합 테스트를 작성하고 있습니다. 대부분의 Sequelize 함수 호출은 약속을 반환합니다. 아래의 테스트 케이스를 작성하는 명확한 방법이 있습니까?체인 된 약속을 처리하는 명확한 방법이 있습니까?

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); 
     }); 
}); 
관련 문제