下記のようなケースを考える.

基本的なテスト環境設定はこちら

# sample.coffee

class Sample
    getData: ->
        url = "http://example.com/1/json"
        
        xhr = new XMLHttpRequest()
        xhr.open("GET", url, false)
        xhr.send()
        
        data = null
        
        if xhr.status is 200
            data = JSON.parse(xhr.responseText)
            
        return data

.getData のテストを書く際に,xhrの通信部分をスタブしたい.

jasmine-ajaxjasmine-jquery を使用する.

npm install jasmine-ajax --save-dev
npm install jasmine-jquery --save-dev
# sampleSpec.coffee

describe Sample, ->
    beforeAll ->
        jasmine.Ajax.install()
    afterAll ->
        jasmine.Ajax.uninstall()
    
    describe '.getData', ->
        beforeEach ->
            mockedData = {sample: 1}
    
            requestUrl = "http://example.com/1/json"
            jasmine.Ajax.stubRequest(requestUrl).andReturn
                status: 200
                responseText: JSON.stringify(mockedData)
                
            @sample = new Sample()
            
        it 'should got data', ->
            expect(@sample.getData().toBe({sample: 1})

beforeAllで jasmine.Ajax.install() する. .getData() 呼び出し時のxhrリクエストをスタブし,返り値のテストをしている.