【发布时间】:2015-01-30 08:42:14
【问题描述】:
我实际上在使用一个由我的社会创建的微框架,我们在其中使用 Mongoose。
为了管理 mongoose 对象,我们创建了一个模型工厂,它返回一个与 mongoose 名称对象对应的模型。
实际上,我正在开发一个身份验证服务,我在其中注入了这个模型工厂。
我需要用 mocha 和 sinonjs 对其进行单元测试,但我有点迷茫......
这是我要测试的身份验证服务方法:
class AuthenticationService extends Service
constructor: (modelFactory)->
super(modelFactory)
@authorizedClientIds = [
"123456"
"toto"
]
@OAuthAccessTokensModel = @modelFactory.getSchema('OAuthAccessTokens')
@OAuthClientsModel = @modelFactory.getSchema('OAuthClients')
@OAuthUsersModel = @modelFactory.getSchema('OAuthUsers')
@OAuthRefreshTokensModel = @modelFactory.getSchema('OAuthRefreshTokens')
## Get an access token from the bearer token ##
getAccessToken: (bearerToken, callback)->
@OAuthAccessTokensModel.findOne({accessToken: bearerToken}, callback)
module.exports = AuthenticationService
我想测试 getAccessToken 方法,但我显然不知道如何使它工作......
我试着做类似的东西:
describe("Authentication Service", function () {
var service;
before(function () {
ModelFactory = use('/app/core/config/database/ModelFactory');
var mock = sinon.mock(ModelFactory.getFactoryInstance([]));
mock.expects("getSchema").withArgs("user").return({name:'user',getName:function(){}});
service = new AuthenticationService(mock);
});
describe("getAccessToken", function () {
it('should return-1 when the value is not present', function () {
var proxy = once(service.getAccessToken());
mock.verify();
});
});
});
我应该如何正确测试它?
编辑:
我尝试了一些东西,但测试起来似乎很奇怪,因为我提出了要比较的结果,但结果也是预期的..所以我永远不会通过测试:x...
describe("Authentication Service", function () {
var service;
before(function () {
ModelFactory = use('/app/core/config/database/ModelFactory');
var factory = new ModelFactory([]);
sinon.stub(factory, "getSchema").returns({findOne: sinon.stub().returns()});
service = new AuthenticationService(factory);
});
describe("getAccessToken", function () {
it('Check if the access token correspond to a database entry', function () {
stubResult = {token: '123456'};
service.getAccessToken = sinon.stub().withArgs('1234').returns(undefined);
assert.equal(service.getAccessToken(), undefined);
});
});
});
一些帮助?
感谢提前
【问题讨论】:
标签: javascript node.js unit-testing sinon