9

私はバックボーンアプリケーションのためにジャスミンでユニットテストを書いています。そしてもちろん、私はテストでSinonを使用しています。しかし今、私は問題を抱えています。ログイン画面のテストを作成していますが、サーバーの動作が非常に悪いため、サーバーの応答をシミュレートする必要があります。今私のコードは見えます:

describe('Login', function(){
     it('Should simulate server response', function(){
        server = sinon.fakeServer.create();
        server.respondWith("GET", "http:\\example.com", [200, {"Content-Type": "application/json"}, '{"Body:""asd"}'])
     })
     $('body').find('button#login').trigger('click');
     server.respond();
     server.restore()
     console.log(server.requests);
})

このコードは正常に機能しますが、コンソールにはすべてのリクエストを偽造していることがわかりますが、ログイン中に他のリクエストもあり、それらに偽のサーバーを使用する必要はありません。次の画面のリクエストです。たぶん、フィルターを作成したり、特別な要求に対して偽の応答を使用したりする方法が存在します。お願い助けて。ありがとう。

4

1 に答える 1

12

秘訣は、サーバーのFakeXMLHttpRequestオブジェクトでフィルターを使用することです。次に、フィルターで除外したリクエストのみが偽のサーバーを使用します。

server = sinon.fakeServer.create();
server.xhr.useFilters = true;

server.xhr.addFilter(function(method, url) {
  //whenever the this returns true the request will not faked
  return !url.match(/example.com/);
});

server.respondWith("GET", "http:\\example.com", [200, {"Content-Type": "application/json"}, '{"Body:""asd"}'])
于 2013-02-27T21:50:35.240 に答える