Javascript 从Jasmine测试调用web服务

Javascript 从Jasmine测试调用web服务,javascript,jasmine,Javascript,Jasmine,我正在尝试为一些web服务编写一些黑盒测试。为了做到这一点,我使用茉莉花。我想知道如何从Jasmine调用web服务。我目前有以下设置: describe('Web Service', function () { describe('-> endpoint', function() { describe('-> create', function() { var response = null; beforeEach(function(done)

我正在尝试为一些web服务编写一些黑盒测试。为了做到这一点,我使用茉莉花。我想知道如何从Jasmine调用web服务。我目前有以下设置:

describe('Web Service', function () {
  describe('-> endpoint', function() {
    describe('-> create', function() {
      var response = null;
      beforeEach(function(done) {
        // execute a call to the web service here
        if (done) {
          done();
        }
      });

      it('should run correctly', function(done) {
        if (done) {
          done();
        }
      });
    });
  });
});
如何从Jasmine调用web服务


谢谢大家!

您应该使用类似于模拟响应的东西,断言您的代码调用了服务并收到了正确的响应,然后正确地完成了它的工作,或者,如果您确实希望,nock甚至可以允许您的代码执行对web服务的实际调用

否则,如果您只想从测试中调用webservice,您很可能有一个API客户机,您可以自己执行调用

describe('My Test', function (done) {
    beforeEach(function () {
        var myApiClient = new MyApiClient();
        //unless you're using promises
        this.response = myApiClient.synchronousGet('http://someURL.com');
    });
});

Jasmine本身不负责也不应该负责调用您的web服务,这些服务应该来自您的测试单元。

您不应该从测试中发送ajax请求,因为您将依赖于服务来运行测试。。。Web服务的错误响应并不一定意味着代码运行不正确

一个很好的方法是模拟ajax请求(正如limelights所说),但是Jasmine有一个ajax模块可以帮助您实现这一点。看

这个Jasmine插件将允许您捕获对服务的调用,并将其替换为始终相同的新配置响应(因为您应该知道正确测试服务的确切响应)

无论如何,如果你真的想调用你的服务,我认为你必须在测试中用JS编写它(不建议在测试中编写这样的代码。更好的编写将被测试的函数)。正如我所知,Jasmine没有为你提供这种帮助,它只是为了测试目的