我正在为其中一个应用程序连接茉莉花测试用例。我刚开始学习茉莉花。 以下是我的脚本代码
var aclChecker = function(app,config) {
validateResourceAccess = function (req, res, next) {
req.callanotherMethod();
res.send(401,'this is aerror message');
}
}
现在我想窥探 res
和req
对象,知道是否已调用send方法。
由于req和res不是全局变量,我对如何在junit规范中创建间谍有疑问
请帮助!!!!!!!!
答案 0 :(得分:3)
您可以像这样简单地模仿req
和res
。
describe("acl checker", function() {
it("should validate resource access", function() {
var mockReq = {
callAnotherMethod: function() {}
};
var mockRes = {
send: function() {}
};
var mockNext = {};
spyOn(mockReq, "callAnotherMethod");
spyOn(mockRes, "send");
aclChecker.validateResourceAccess(mockReq, mockRes, mockNext);
expect(req.callAnotherMethod).toHaveBeenCalled();
expect(res.send).toHaveBeenCalledWith(401, 'this is aerror message');
});
});
答案 1 :(得分:1)
通常,在单元测试中,您将模拟任何资源请求,并仅验证请求是否正确。因此,您将调用模拟请求库,并验证URL和标头是否正确。
但是,如果您确实想要测试对资源的实际访问权限,则需要首先构建您的请求对象,然后让自己访问它。
如果您想了解请求模拟,请查看jasmine-ajax: https://github.com/pivotal/jasmine-ajax
如果您仍想这样做,则应在测试文件中使用beforeEach函数来创建测试所需的依赖项。
看看这个有关beforeEach的更多帮助: https://github.com/pivotal/jasmine/wiki/Before-and-After