-1
我正在嘗試使用摩卡和should.js套接字交互的負載測試場景。我有一組用戶詳細信息,我想使用套接字通信進行身份驗證,並希望驗證他們的響應。它適用於單個用戶,但是當我嘗試爲多個用戶循環時 - 我最終遇到了問題。收集了一些基於帖子的輸入:Tests from looping through async JavaScript (Mocha)。使用摩卡的多個異步套接字響應處理
下面的代碼片段:
var users = [{name:'A',password:'password',expected:'success'},{name:'B',password:'badPass',expected:'failure'}];
describe('socket Interaction test' , function() {
function socketInteraction(users, done) {
client.emit('userAuthentication', {'name':users.name,'password':users.password}, function(callback) {
console.log('Emit' + users.name);
});
client.on('userAuthenticationResponse', function(response) {
console.log('Resp' + response.status + 'Expected' + users.expected);
response.status.should.equal(users.expected);
done();
});
}
it('Dummy', function(done) {
describe('Mutiple login Test Async', function() {
it('User Login Test', function(done) {
users.forEach(function(users, callback) {
console.log(users.name);
socketInteraction(users, function(err) {
if (err) {
return;
}
done();
});
});
});
});
});
});
我得到在運行測試的響應是:
socket Interaction test
✓ Dummy
Mutiple login Test Async
A
B
RespsuccessExpectedsuccess
✓ User Login Test
RespsuccessExpectedfailure
2 passing (43ms)
第二個測試有失敗。不知道我在哪弄亂了代碼。欣賞一些指針來解決這個問題。謝謝。
我嘗試添加完成作爲第二個參數,幷包含調用回調,而不是done()。它導致了一系列新問題。讚賞你是否可以更詳細地概述這些變化。謝謝。 – Vineeth
我看到的另一件事是,你已經將你的describe()和it()混合了一下。你應該讓描述成爲它的包裝。不要把它放在另一個裏面。你重寫了外部函數,這樣測試永遠不會結束。如果您看到更多問題,請使用新代碼進行更新。 – William