mocha 测试是否可以在我的所有测试中重用相同的 before() 和 after() 钩子?

用户762579

我在所有测试中使用相同的 before() 和 after() 根级别挂钩来设置和清除我的测试数据库......有没有办法将它们移动到文件中并导出/导入该文件?

特洛伊·韦伯

是的。我能够通过利用 mocha 的this上下文来实现这种行为,在他们关于共享行为的 Wiki 文章中进行了讨论我正在使用ts-mocha异步/等待功能的帐户。

所以我编写了使用登录和注销的函数supertest-session,它看起来像这样:

export function authHooks()
{
    const email = UsersSeed[0].email;
    const password = UsersSeed[0].password;

    before(`login ${email}`, async function()
    {
        await this.session.post('/api/account/login')
            .send({ email, password })
            .expect(201);
    });

    after(`logout ${email}`, async function()
    {
        await this.session.get('/api/account/logout')
            .expect(200);
    });
}

在我的内部describe我设置了this.session并且在我的it-statements 中我可以重用它。它看起来有点像这样:

import { expect } from 'chai';
import * as Session from 'supertest-session';
import { authHooks } from './authHooks';

describe('Some Suite', () =>
{
    before(function()
    {
        this.session = new Session(SomeApp);
    });

    after(function()
    {
        this.session.destroy();
    });

    describe('when not authenticated', () =>
    {
        it('returns 403', async function()
        {
            await this.session.get('/api/jobs')
                .expect(403)
                .expect({ statusCode: 403, message: 'Forbidden resource' });
        });
    });

    describe('when authenticated', () =>
    {
        authHooks();

        describe('when finding jobs', () =>
        {
            it('returns all jobs', async function()
            {
                await this.session.get('/api/jobs')
                    .expect(200)
                    .then((response) =>
                    {
                        expect(response.body).to.deep.eq(SomeThing);
                    });
            });
        });
    });
});

我不确定这是否是实现它的最佳方式(我不喜欢个人function过度使用() => {}),但我已经确认它有效。

上面的代码不会运行,主要是因为我在保护代码细节,但希望这将为您提供至少一个选项,也许其他人可以展示更好的方法来做到这一点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

黄瓜钩子中的标签(@Before和@After)如何组织

来自分类Dev

从after内部检测测试失败Mocha中的每个钩子

来自分类Dev

Mocha Async before() 钩子超时

来自分类Dev

node.js Mocha:如何重用在本地设置 before() 钩子中定义的变量?

来自分类Dev

为node.js中的方法设置一个before / after钩子

来自分类Dev

junit中测试类的通用@before和@after

来自分类Dev

junit中的测试类常见的@before和@after

来自分类Dev

西装中的每个测试都调用@Before和@After方法

来自分类Dev

NodeJ和Mocha测试响应

来自分类Dev

具有标题的:: before和:: after元素

来自分类Dev

CSS中的&:: before和&:: after是什么?

来自分类Dev

CSS中:: after和:: before之间的区别

来自分类Dev

@Rule @Before和@After中的JUnit参数

来自分类Dev

<br>和:: after或:: before

来自分类Dev

如何在 Mocha 中执行测试之前强制 before() 完成?

来自分类Dev

在 after() 钩子 nightwatch 中设置 cookie

来自分类Dev

使用Babel和Webpack的Mocha测试失败

来自分类Dev

使用SailsJS和Superagent运行Mocha测试

来自分类Dev

使用 Mocha 和 Chai 测试 React

来自分类Dev

如何使用Mocha和Nock重新测试相同的URL?

来自分类Dev

Java 8和Lambdas在关机钩子中

来自分类Dev

在JUnit4测试中,在@Before和@After中访问对象的同一实例

来自分类Dev

CSS标签:before和:after

来自分类Dev

在字体图标上使用:before和:after有什么好处?

来自分类Dev

带有:: before和:: after的文本无法正确居中?

来自分类Dev

具有:: before和:: after形状的“响应式”按钮

来自分类Dev

CSS - 使用没有 ::before 和 ::after 的 attr() 函数

来自分类Dev

Internet Explorer 10中的:before和:after问题

来自分类Dev

webpack添加了带有mocha和chai的测试模块

Related 相关文章

热门标签

归档