2014-02-19 1 views
0

Я хочу установить 2 переменных в свой тестовый пример, который возвращает функция async. В предыдущей попытке я использовал run() и waitsFor(), но я хочу использовать функцию jasmine 2.0 done(). Я попробовал что-то вроде этого:jasmine 2.0 async assignin variables

describe("Test", function() { 

    it("makes a log file", function(done) { 
     make_valid_detailed(1, 2, '2014-02-20', 'test.txt', location, function(error, returnCode, path) { 
      this.lpath = path; 
      this.status_code = returnCode; 
     }); 
     expect(this.lpath).toBeDefined(); 
     expect(this.status_code).toBeDefined(); 
     done(); 
    }); 

}); 

Я бы хотел, чтобы переменные были доступны для последующего сценария test, it(). Я всегда и так неопределен, как сейчас. В конечном итоге у меня будет несколько запущенных функций async, которые устанавливают некоторые переменные, а затем остальные тесты проверяют, что представляют собой эти переменные, файлы и т. Д.

ответ

0

Вы игнорируете основные правила определения области обзора JavaScript, это изменяется в соответствии с контекстом функции . Кроме того, если make_valid_detailed isync, ваши 2 переменные не будут определены, так как перед ним будут выполняться функции ожидания.

describe("Test", function() { 

it("makes a log file", function(done) { 
    make_valid_detailed(1, 2, '2014-02-20', 'test.txt', location, function(error, returnCode, path) { 
     expect(path).toBeDefined(); 
     expect(returnCode).toBeDefined(); 
     done(); 
    }); 


}); 

}); 
+0

С синтаксисом run() и waitsFor() было ясно, чего ждать. Я смущен, как добиться этого только с помощью синтаксиса done(). Я новичок в JS и Jasmine, если вы не можете сказать :) – TorusTorus

+0

Это действительно отлично подходит для запуска теста асинхронного тестирования. Но как вы тогда устанавливаете переменную ouside этого(). Я хочу установить путь так, чтобы все его() могли использовать путь var. – TorusTorus

 Смежные вопросы

  • Нет связанных вопросов^_^