Как я могу пройти этот тест, не прибегая к блокам run / waitsFor?
it("cannot change timeout", function(done) {
request("http://localhost:3000/hello", function(error, response, body){
expect(body).toEqual("hello world");
done();
});
});
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
значения помогло мне в новой установке, созданной с нуля с использованием Jasmine + Jest. Работает как положено.it
. К тому времени, когда вы участвуете в тесте,done
кажется, что он уже подключился к тому, чтоDEFAULT_TIMEOUT_INTERVAL
было доit
начала.Отправлен запрос на включение для этой функции ( https://github.com/mhevery/jasmine-node/pull/142 )
it("cannot change timeout", function(done) { request("http://localhost:3000/hello", function(error, response, body){ expect(body).toEqual("hello world"); done(); }); }, 5000); // set timeout to 5 seconds
источник
Чтобы установить глобальный тайм-аут Jasmine-Node, сделайте следующее:
jasmine.getEnv().defaultTimeoutInterval = timeoutYouWouldPrefer;// e.g. 15000 milliseconds
Благодарим разработчика Гейба Хикса за выяснение части .getEnv () через отладку, несмотря на дезинформацию в документе README, в котором утверждается, что это сделано путем установки jasmine.DEFAULT_TIMEOUT_INTERVAL.
Если вы хотите установить собственный тайм-аут только для одного it (), вы можете попробовать передать тайм-аут (миллисекунды) в качестве третьего аргумента (после строкового оператора и функции). Вот пример того, как это делается здесь , но я не уверен, что произошло бы, если бы пользовательский тайм-аут был больше, чем по умолчанию для Жасмин. Я думаю, это не удастся.
источник
jasmine.DEFAULT_TIMEOUT_INTERVAL = 12000;
глобальный файл конфигурации, который использую для всех тестов, и он работает должным образом.Похоже, теперь вы можете добавить его в качестве последнего аргумента
it
функции:describe('my test', function(){ it('works', function(done){ somethingAsync().then(done); }, 10000); // changes to 10 seconds });
источник
В Angular поместите это за пределы блока описания:
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
Это относится ко всем тестам в файле .spec.ts.
источник
Добавление:
jasmine.DEFAULT_TIMEOUT_INTERVAL = yourTime;
у меня работал над вспомогательным файлом.источник
Поместите это после
describe
утверждения:describe("A saves to DB", function() { jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
источник
Почему не шпионить
setTimeout()
?Что-то вроде:
var spy = spyOn(window, 'setTimeout').andCallFake(function (func, timeout) { expect(timeout).toEqual(2500); func(); }); setTimeOut(function () { ... }, 2500); expect(spy).toHaveBeenCalled();
источник
В моем случае у меня было несколько тестовых случаев, и пока я использовал вышеупомянутое решение, я использовал:
beforeEach(function() { originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; });
DEFAULT_TIMEOUT_INTERVAL не был обновлен в первом тестовом примере, поэтому мне пришлось добавить это:
beforeAll(() => { jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; })
к моему коду, чтобы успешно запустить все тесты.
источник
Чтобы сделать это глобально для всех ваших тестов (в случае тестирования e2e или интеграции), вы можете использовать помощник.
При правильной настройке вспомогательный файл должен быть загружен до выполнения тестов и позволит вам изменить DEFAULT_TIMEOUT_INTERVAL глобально:
спецификация / поддержка / jasmine.json
{ ... "helpers": [ "/path/to/helpers/**/*.ts" ] }
помощники / timeout.ts
jasmine.DEFAULT_TIMEOUT_INTERVAL = 300000;
источник
Измените j $ .DEFAULT_TIMEOUT_INTERVAL на 10000 в следующем файле: npm \ node_modules \ jasmine-core \ lib \ jasmine-core
источник