2017-09-24 75 views
3

我的问题

AVA日志记录(t.log)只是一个测试内工作,但没有设置(beforebeforeEach)或拆除(after*)函数中。AVA:日志生成外测试没有在控制台所示

这意味着对调试和复制非常有用的有意义的设置/拆卸数据将丢失。这种情况发生在成功和失败的测试中,并且有和没有--verbose标志。

代码

import test from 'ava'; 

test.before(t => { 
    // This runs before all tests 
    t.log('before - 1'); 
}); 

test.before(t => { 
    // This runs after the above, but before tests 
    t.log('before - 2'); 
}); 

test.after('cleanup', t => { 
    // This runs after all tests 
    t.log('after'); 
}); 

test.after.always('guaranteed cleanup', t => { 
    // This will always run, regardless of earlier failures 
    t.log('after always'); 
}); 

test.beforeEach(t => { 
    // This runs before each test 
    t.log('beforeEach'); 
}); 

test.afterEach(t => { 
    // This runs after each test 
    t.log('afterEach'); 
}); 

test.afterEach.always(t => { 
    // This runs after each test and other test hooks, even if they failed 
    t.log('afterEachAlways'); 
}); 

test(t => { 
    t.log('A test'); 
    t.pass(); 
}); 


test(t => { 
    t.log('A test'); 
    t.fail(); 
}); 

输出

$ ava run.js --verbose 

    ✔ [anonymous] 
    ℹ A test 
    ✖ [anonymous] Test failed via `t.fail()` 
    ℹ A test 

    1 test failed [00:22:08] 

    [anonymous] 
    ℹ A test 

    /Users/adam/Personal/tmp/ava-bug-log-in-before-each/run.js:46 

    45:  t.log('A test'); 
    46:  t.fail(); 
    47: }); 

    Test failed via `t.fail()` 

请注意,只有从测试(A test)打印内容的节目。所有其他日志都会丢失。

我的问题

怎样才能看到日志从测试套件的安装和拆卸步骤?

+0

请注意,如果直接输出到console.log,则会打印出行。这是ava记录器在这里表现怪异。 –

+0

@AssafLavie真的,但使用'console.log'打破我们的代码准则(esbint与[airbnb样式](https://github.com/airbnb/javascript)),我宁愿避免“忽略此行”指示因为他们使代码不那么干净。希望能用't.log'找到一个简单的解决方法。清楚地说明了 –

+1

。刚刚注意到。无论如何,它似乎是一个艾娃的缺陷。当你调用't.log'(你可以测试这个,btw)或者日志累积(有一些内部数组用来推送行)在测试开始时被重置时,它要么没有使用相同的执行上下文。我会打开一个错误。 –

回答

2

你能为此打开一个问题吗? https://github.com/avajs/ava/issues

我同意这应该工作。

+0

[很高兴](https://github.com/avajs/ava/issues/1536 ),完成[一个单独的git回购示例问题](https://github.com/adamatan/ava-logging-bug)。 –

相关问题