Как я могу синхронный тест с супертестом

коды:

should = require('should')
request = require('supertest')
request = request("stackoverflow.com");

describe "temp", ->

    input_output = [
        { input:"[mocha] [supertest]", output: ["asdf", "asdf"] }
        { input:"아버지가방에들어가신다", output: [ '아버지가방에들어가신다', '아버지', '가방', '에들', '어가', '신다' ] }
        { input:"hi hello", output: ["hi", "hello"] }
    ]

    for item in input_output 

        it "curl https://stackoverflow.com/search?q=#{item.input}", (done) ->

            request
                .get("/search?q=#{item.input}")
                .expect(200)
                .expect (res) ->
                    console.log item.input
                    return
                .end(done)

выходы:

я ожидал ниже результатов:

я знаю, что если я тестирую без обратного вызова, я могу синхронно протестировать. но не работал.


person Sangwook Lee    schedule 09.07.2014    source источник


Ответы (1)


Попробуйте использовать локальную переменную внутри теста. Что-то вроде этого:

describe "temp", ->

    input_output = [
        { input:"[mocha] [supertest]", output: ["asdf", "asdf"] }
        { input:"아버지가방에들어가신다", output: [ '아버지가방에들어가신다', '아버지', '가방', '에들', '어가', '신다' ] }
        { input:"hi hello", output: ["hi", "hello"] }
    ]

    for item in input_output 

        it "curl http://stackoverflow.com/search?q=#{item.input}", (done) ->
            itemInput = item.input // <-- save in local scope var

            request
                .get("/search?q=#{item.input}")
                .expect(200)
                .expect (res) ->
                    console.log itemInput // <-- use local scope var
                    return
                .end(done)
person JME    schedule 05.06.2015