0

我正在为其中一个应用程序连接 jasmine 测试用例。我刚开始学习茉莉花。下面是我的脚本代码

var aclChecker = function(app,config) {

    validateResourceAccess = function (req, res, next) {
            req.callanotherMethod();
            res.send(401,'this is aerror message');
   }

}

现在我想 spyOnresreq对象知道是否调用了 send 方法。 由于 req 和 res 不是全局变量,我对如何在 junit 规范中创建间谍有疑问

请帮忙!!!!!!!!

4

2 回答 2

4

你可以简单地模拟reqres喜欢这样。

  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');
    });
  });
于 2015-01-30T06:43:27.473 回答
1

通常,在单元测试中,您将模拟任何资源请求并仅验证请求是否正确。因此,您将改为调用模拟请求库,并验证 url 和标头是否正确。

但是,如果您真的想测试对资源的实际访问权限,您需要先构建您的请求对象,然后再让自己访问它。

如果您想了解请求模拟,请查看 jasmine-ajax: https ://github.com/pivotal/jasmine-ajax

如果您仍然想这样做,您应该在测试文件中使用 beforeEach 函数来创建测试所需的依赖项。

看看这个以获得更多关于 beforeEach 的帮助: https ://github.com/pivotal/jasmine/wiki/Before-and-After

于 2014-10-26T19:31:47.083 回答