在Node.JS项目(Angular5项目的后端)中,我创建了一个处理AWS身份验证的服务。。。我叫这个
awsAuthenticationService
awsAuthenticationService.js
我有以下方法,该方法具有一些次要逻辑,然后调用
cognitoIdentityServiceProvider
". 这是我的一段代码(我真的减少了这个)
constructor() {
this._cognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider(this.cognitoConfig);
}
toggleUserAccess(userName, type) {
const params = {
Username: userName,
UserPoolId: this.cognitoConfig.userPoolId
};
if (type === null) {
return this._cognitoIdentityServiceProvider.adminEnableUser(params).promise();
}
return this._cognitoIdentityServiceProvider.adminDisableUser(params).promise();
}
从中可以看到
toggleUserAccess
我们传递一些参数,确定它们是什么,然后调用适当的方法。我希望通过一个单元测试来测试它,该单元测试将调用
authenticationService.toggleUserAccess
,传递一些参数并监视
authenticationService._cognitoIdentityServiceProvider
let authenticationService = require('./awsAuthenticationService');
describe('toggleUserAccess', () => {
beforeEach(() => {
authenticationService._cognitoIdentityServiceProvider = {
adminDisableUser(params) {
return {
promise() {
return Promise.resolve(params);
}
};
}
};
authenticationService._cognitoIdentityServiceProvider = {
adminEnableUser(params) {
return {
promise() {
return Promise.resolve(params);
}
};
}
};
});
it('should call adminEnableUser if the type is null', () => {
authenticationService.toggleUserAccess('TheUser', null);
const spyCognito = sinon.spy(authenticationService._cognitoIdentityServiceProvider, 'adminEnableUser');
expect(spyCognito.calledOnce).to.equal(true);
});
it('should call adminDisableUser if the type is null', () => {
authenticationService.toggleUserAccess('TheUser', '0001');
const spyCognito = sinon.spy(authenticationService._cognitoIdentityServiceProvider, 'adminDisableUser');
expect(spyCognito.calledOnce).to.equal(true);
});
});
我的考试不及格,我想我已经准备好了
sinon.spy
不正确-有人能看出我做错了什么吗?或者请给我建议