问题摘要:我正在使用Jest和Puppeteer编写一些测试套件,以自动完成Angular JS应用的端到端测试。我从事大量文档工作,因为帮助未来的开发人员加快速度非常重要。不幸的是,我不知道记录由Jest编写的测试套件的常规/广泛接受的方法。我已经编写了广泛的自述文件,其中介绍了我们正在使用的工具,我的团队如何配置Jest / Puppeteer以及如何开始编写测试。我特别想知道的是如何在每个测试套件中记录文档,或者甚至有必要花时间做这些事情(我倾向于是的,绝对是值得花费的时间在后一个问题上做)。
以下是一些我想记录的示例代码:
// index.spec.js
// Insert comment here describing test file (aka test suite)
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
// Insert comment here describing test suite
describe('load startpage', async () => {
// Insert comment here describing test
test('page loads', async () => {
await page.goto('https://my-site.com', {waitUntil: 'networkidle0'});
});
});
// Insert comment here describing test suite
describe('complete form', async () => {
// Insert comment here describing test
test('populate form', async () => {
let formSelector = 'form[name="form1"]';
await page.waitForSelector(formSelector, {timeout: 3000});
await page.waitForSelector(formSelector+' input', {timeout: 3000});
await page.click(formSelector+' input');
await page.keyboard.type('Hello World');
let submitButtonSelector = 'form[name="form1"] button[type="submit"]';
await page.click(submitButtonSelector);
});
// Insert comment here describing test
test('submit form', async() => {
let submitButtonSelector = 'form[name="form1"] button[type="submit"]';
await page.waitForSelector(submitButtonSelector, {timeout: 3000});
await page.click(submitButtonSelector);
});
});
await browser.close();
})();
我已经尝试过的操作: 我已经研究了一些通过JSDoc来记录Javascript的常规方法,但是我并不认为这适用于此,因为我使用的是Jest和Puppeteer Apis,我认为它们是本机Javascript函数的包装器。
问题:你们中的Jest / Puppeteer黑客是否知道记录测试的正确方法?预先谢谢你!
答案 0 :(得分:1)
我将尝试调整此响应,使其听起来不完全自觉。
是的,文档是必不可少的,但是太多也不能很好地发挥作用。
对于测试而言,无论是unit / integration / e2e,框架已经为您提供了指定/记录测试所需的所有构造。据我所知,没有其他约定可以记录测试套件。
describe / it / test / etc块应被视为文档,并且应指导任何开发人员通过编写测试者的意图。
在极少数情况下,任何其他必要的评论都可以内联完成。
测试的好处在于,如果规范写得好,运行时它的读起来就像一本书。是的,用小短语描述测试很困难,就像命名变量一样。进行练习,但这是可行的。
自述文件中已经涵盖了所有需要的文档。
除了具有良好的测试规范外,您还将获得更多的价值,可确保以一致的方式编写测试,而不是试图解释每个测试的详细内容,让代码做到这一点。