我有以下形式的版本号:
version.release.modification
其中版本,发布和修改是一组数字或'*'通配符.此外,这些数字(以及任何前面的数字)中的任何一个都可能丢失.
所以以下是有效的并解析为:
1.23.456 = version 1, release 23, modification 456
1.23 = version 1, release 23, any modification
1.23.* = version 1, release 23, any modification
1.* = version 1, any release, any modification
1 = version 1, any release, any modification
* = any version, any release, any modification
Run Code Online (Sandbox Code Playgroud)
但这些都无效:
*.12
*123.1
12*
12.*.34
Run Code Online (Sandbox Code Playgroud)
任何人都可以为我提供一个不太复杂的正则表达式来验证和检索版本,版本和修改号码吗?
我在使用promise的代码中有一个失败的Jest测试用例。测试完成后,承诺的解析似乎正在发生,这意味着我无法检查我的承诺解析代码是否已执行。
感觉我需要使事件循环处于滴答状态,以便兑现承诺并执行解决方案代码,但是在Jest中没有找到任何可以做到这一点的东西。
这是一个示例案例。要测试的代码:
const Client = require('SomeClient');
module.exports.init = () => {
Client.load().then(() => {
console.log('load resolved');
setTimeout(() => {
console.log('load setTimeout fired, retrying init');
module.exports.init();
}, 1000);
});
};
Run Code Online (Sandbox Code Playgroud)
测试代码:
jest.useFakeTimers();
const mockLoad = jest.fn().mockImplementation(() => Promise.resolve());
jest.mock('SomeClient', () => {
return {
load: mockLoad
};
}, { virtual: true });
const promiseTest = require('./PromiseTest');
describe('SomeClient Promise Test', () => {
it('retries init after 10 secs', () => {
promiseTest.init();
expect(mockLoad).toHaveBeenCalledTimes(1);
expect(setTimeout).toHaveBeenCalledTimes(1); // <-- FAILS - setTimeout has not …Run Code Online (Sandbox Code Playgroud)