代码之家  ›  专栏  ›  技术社区  ›  sgarcia.dev

JEST:“在指定的5000ms超时内,没有调用异步回调jest.setTimeout设置超时“,尽管它已被配置

  •  6
  • sgarcia.dev  · 技术社区  · 8 年前

    在你指出它之前,是的,我知道这看起来像是多重问题的重复,比如;

    但是,我实现了所有建议的3个修复程序;

    • 使用 jest.setTimeout() 在测试内部设置异步超时
    • 使用的第三个参数 test()
    • done 完成后的功能

    这就是我的玩笑测试的样子;

    const webdriverio = require('webdriverio');
    const options = {
        desiredCapabilities: {
            browserName: 'chrome',
            chromeOptions: {
                args: ["--no-sandbox", "disable-web-security", "--disable-dev-shm-usage"]
            } 
        } 
    };
    const client = webdriverio.remote(options);
    
    beforeEach(async () => {
        await client.init();
    })
    
    test('Google Search for WebdriverIO has correct title', async (done) => {
        jest.setTimeout(30000)
        await client.url('https://www.google.com/ncr');
        await client.setValue('input[name=q]', 'WebdriverIO');
        await client.click('input[value="Google Search"]');
        const title = await client.getTitle();
        expect(title).toBe('WebdriverIO - Google Search');
        done();
    }, 30000);
    
    afterEach(async () => {
        await client.end();
    });
    

    这是我尝试运行测试时得到的日志;

    09:57:19 > jest --config jest.config.js
    09:57:19 
    09:57:20 Installing selenium server ...
    09:57:22 Starting selenium server ...
    09:57:23 Selenium server started ...
    09:57:29 FAIL jest/test/google.spec.js (5.874s)
    09:57:29   ��� Google Search for WebdriverIO has correct title (5016ms)
    09:57:29 
    09:57:29   ��� Google Search for WebdriverIO has correct title
    09:57:29 
    09:57:29     Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
    09:57:29 
    09:57:29       at mapper (node_modules/jest-jasmine2/build/queue_runner.js:41:52)
    09:57:29 
    09:57:29   ��� Google Search for WebdriverIO has correct title
    09:57:29 
    09:57:29     A session id is required for this command but wasn't found in the response payload
    09:57:29 
    09:57:29       at new RuntimeError (node_modules/webdriverio/build/lib/utils/ErrorHandler.js:143:12)
    09:57:29       at RequestHandler.createOptions (node_modules/webdriverio/build/lib/utils/RequestHandler.js:121:23)
    09:57:29       at RequestHandler.create (node_modules/webdriverio/build/lib/utils/RequestHandler.js:212:43)
    09:57:29       at Object.url (node_modules/webdriverio/build/lib/protocol/url.js:24:32)
    09:57:29       at Object.exec (node_modules/webdriverio/build/lib/helpers/safeExecute.js:28:24)
    09:57:29       at Object.resolve (node_modules/webdriverio/build/lib/webdriverio.js:191:29)
    09:57:29       at lastPromise.then.resolve.call.depth (node_modules/webdriverio/build/lib/webdriverio.js:486:32)
    09:57:29       at _fulfilled (node_modules/q/q.js:854:54)
    09:57:29       at self.promiseDispatch.done (node_modules/q/q.js:883:30)
    09:57:29       at Promise.promise.promiseDispatch (node_modules/q/q.js:816:13)
    09:57:29 
    09:57:29 Test Suites: 1 failed, 1 total
    09:57:29 Tests:       1 failed, 1 total
    09:57:29 Snapshots:   0 total
    09:57:29 Time:        5.988s, estimated 7s
    09:57:29 Ran all test suites.
    09:57:29 Killing selenium server ...
    

    如果您能想到为什么在我的本地机器上工作正常的情况下会失败,我们将不胜感激。还有,我试着 jest.setTimeout jest.setTimeout is not a function ;

    https://github.com/facebook/jest/issues/3788

    0 回复  |  直到 7 年前
    推荐文章