2016-03-21 37 views
0

我測試生成基於用戶名和密碼在傳遞憑證的功能:摩卡假陰性結果

generateCredentials(username, password) { 
    return { 
    username: username, 
    password: password 
    }; 
} 

這裏是我的測試:

describe('#generateCredentials(username, password)', function() { 
    it('creates a JSON object with the passed in arguments', function() { 

     var creds = generateCredentials('user', 'pass'); 

     var expectedCreds = { username: 'user', password: 'pass' }; 

     expect(creds).to.equal(expectedCreds); 
    }); 
    }); 

我得到一個錯誤:

AssertionError: expected { username: 'user', password: 'pass' } to equal { username: 'user', password: 'pass' } 

我沒有看到預計什麼和實際返回的內容有什麼區別。我console.logcreds & expectedCreds他們是相同的。爲什麼摩卡會拋出一個錯誤?

回答

1

expect(...).to.equal測試對象是否嚴格等於(與===運算符一樣)。在javascript中具有相同屬性和值的對象是不相等的:

({ prop: 'value' }) === ({ prop: 'value' }); // false 

您可以使用expect(...).to.eql找到,如果對象深深等於:

expect(creds).to.eql(expectedCreds); 

注意:我想你用柴斷言庫。