Chai BDD 与 TDD 风格:运用不同的断言方式

在前端开发中,测试是非常重要的一环。Chai 是一个JavaScript测试框架,它提供了两种不同的风格:BDD(Behavior-Driven Development)与 TDD(Test-Driven Development),两者都可以使用不同的断言方式。在本篇文章中,我们将探讨这两种风格的不同之处,以及如何选择适合自己的方式。

BDD 风格

BDD 在前端开发过程中越来越流行。BDD 风格依靠的是自然语言,强调测试内容的理解和可读性。BDD 的测试用例应该写成一种类似自然语言的表述,因此使用起来非常符合直觉。它更重视测试用例的语言表述,更注重实现的效果。

在 Chai 中,可以使用 expectshould 来进行 BDD 风格的断言。

使用 expect

使用 expect 断言时,测试用例编写形如以下代码。

const { expect } = require('chai');

describe('My Backend API', () => {
  describe('User Management', () => {
    describe('getUserById', () => {
      it('should return user with matching id', async () => {
        const user = await getUserById(1);
        expect(user).to.exist;
        expect(user).to.have.property('name');
        expect(user.name).to.equal('John');
        expect(user).to.have.property('age').that.is.a('number');
        expect(user.age).to.be.above(18);
      });
    });
  });
});

使用 should

使用 should 断言时,测试用例编写形如以下代码。

const { should } = require('chai');

should();

describe('My Backend API', () => {
  describe('User Management', () => {
    describe('getUserById', () => {
      it('should return user with matching id', async () => {
        const user = await getUserById(1);
        user.should.exist;
        user.should.have.property('name');
        user.name.should.equal('John');
        user.should.have.property('age').that.is.a('number');
        user.age.should.be.above(18);
      });
    });
  });
});

TDD 风格

TDD 在前端开发中也非常常见。TDD 风格则更加注重测试用例的准确度和完整性,通常使用断言方法来进行验证。TDD 的测试用例应该真正描述单元测试,更注重实现的细节。

在 Chai 中,可以使用 assert 来进行 TDD 风格的断言。

const assert = require('chai').assert;

describe('My Backend API', () => {
  describe('User Management', () => {
    describe('getUserById', () => {
      it('should return user with matching id', async () => {
        const user = await getUserById(1);
        assert.exists(user);
        assert.isObject(user);
        assert.containsAllKeys(user, ['name', 'age']);
        assert.propertyVal(user, 'name', 'John');
        assert.isNumber(user.age);
        assert(user.age > 18, 'The age should be above 18');
      });
    });
  });
});

选择使用哪种风格和断言方式?

在选择使用哪种风格和断言方式时,需要考虑几个因素。

  1. 项目团队的喜好(如果团队成员喜好 BDD,那么使用 BDD 风格;如果喜好 TDD,那么使用 TDD 风格);
  2. 采用的测试框架(不同的测试框架可能支持不同的风格和断言方式);
  3. 应用程序自身的特点(如果应用程序更加强调代码可读性,那么优选 BDD 风格;如果更注重验证结果的精准度,那么优选 TDD 风格)。

无论使用哪种风格和方式,都应该遵循一些最佳实践,如每个测试用例应该具有独立性、应该包括边界条件测试、应该避免测试重复等。

总结

本文介绍了 Chai BDD 和 TDD 风格,包括它们的特点和使用方法。BDD 风格更加依靠自然语言,强调理解和可读性;TDD 风格则更加注重准确度和完整性,使用断言方法。在选择使用哪种风格和方式时,需要考虑团队喜好、测试框架和应用程序特点,同时遵循一些最佳实践。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6595fbd8eb4cecbf2d9e5932


纠错反馈