Javascript 在流中写入规范:测试是否设置了变量
我有以下规范,其中Javascript 在流中写入规范:测试是否设置了变量,javascript,mocha.js,flowtype,Javascript,Mocha.js,Flowtype,我有以下规范,其中somePromise()返回true或抛出错误: describe('context level 1', () => { let a; let error; beforeEach(async () => { a = undefined; error = undefined; try { a = await somePromise(); } catch (e) { error = e;
somePromise()
返回true或抛出错误:
describe('context level 1', () => {
let a;
let error;
beforeEach(async () => {
a = undefined;
error = undefined;
try {
a = await somePromise();
} catch (e) {
error = e;
}
});
afterEach(() => {
a = null;
error = null;
});
describe('context level 2', () => {
before(() => {
doSomeSetup();
});
it('test case 1', () => {
a.should.balahalah();
});
});
describe('context level 2', () => {
before(() => {
doSomeSetup();
});
it('test case 2', () => {
error.message.should.equal('xxxdasfsda');
});
});
});
规范按预期工作,但流检查(我的项目使用facebook流)显示错误,例如:
无法获取错误消息,因为null中缺少属性消息
[1]
问:这些规范应该如何在flow中编写?flow不知道类似于每个之前的
,也不应该知道。Flow表示在您的测试中,error
可能是null
。在您的情况下,您的测试运行程序应该捕获异常并在这种情况下使测试失败。所以有两种方法来处理这个问题:
1) 让测试运行程序处理异常
您可以修改.flowconfig
以包括以下内容:
[options]
suppress_comment=\\(.\\|\n\\)*\\$ExpectError
然后在你的测试中:
// $ExpectError
error.message.should.equal('xxxdasfsda');
这意味着您知道这里有一个流错误,但如果它发生,将由测试运行程序处理
2) 依靠流动
我更喜欢这种方法,尽管它会产生更多的代码,因为它更明确,测试更清晰:
it('test case 2', () => {
if (!error) {
assert.fail('Error was not set correctly');
}
error.message.should.equal('xxxdasfsda');
});
您可以显式地处理所有可能的场景,以避免流错误
description('context level 1',()=>{
描述('上下文级别2',()=>{
之前(()=>{
doSomeSetup();
});
它('测试用例1',()=>{
试一试{
常量a=等待主题();
应该(结果);
}捕获(e){
不应存在(e);
}
});
});
描述('上下文级别2',()=>{
之前(()=>{
doSomeSetup();
});
它('测试用例2',()=>{
试一试{
常量a=等待主题();
不应存在(a);
}捕获(e){
e、 message.should.equal('xxxdasfda');
}
});
});
});