有效性测试

添加有效性规则

  • 有效性规则可以避免我们向数据库中添加无用的信息:
  1. 有效的用户必须有名字
  2. 名字不少于3个字符。
    打开user.js文件:
const UserSchema = new Schema({
                              name: String,
                              postCount: Number
});

添加规则:有效的用户必须有名字

const UserSchema = new Schema({
                              name: {
                                type: String,
                                required: [true, 'Name is required.'] //向未命名的用户传递信息
                              },
                              postCount: Number
});

规则1的有效性测试

在test中添加validation_test.js文件:

const assert = require('assert');
const User = require('../src/user');

describe('Validation records', () => {
         it('requires a user name', () => {
            const user = new User({name : undefined});
            const validationResult = user.validateSync(); //validateSync()函数在测试有效性时,会同时返回有效性信息
//          user.validate((validationResult) => {//validate()不会返回有效性信息,所以我们需要一个回调来传递有效性信息
//          });
            console.log(validationResult);
         });
});

返回的有效信息可以看做一个object,所以我们要获取我们需要的信息从而使用断言:

const assert = require('assert');
const User = require('../src/user');

describe('Validation records', () => {
         it('requires a user name', (done) => {
            const user = new User({name : undefined});
            const validationResult = user.validateSync(); //validateSync()函数在测试有效性时,会同时返回有效性信息
            //            user.validate((validationResult) => {//validate()不会返回有效性信息,所以我们需要一个回调来传递有效性信息
            //            });
            //console.log(validationResult);
            const message = validationResult.errors.name.message;
            console.log(message);
            assert(message === 'Name is required.');
            done();
            });
});

使用validate添加规则:名字不少于3个字符

打开user.js文件:

validate: {
              //把validator对象赋值成一个函数,函数参数为name属性
              validator: (name) => name.length > 2,
              //当validator检测到错误的时候,返回message对象
              message: 'Name must be longer than two charecters.'
},

规则2的有效性测试

在validation_test.js里面添加新的测试:

it('requires a user\'s name longer then two characters', (done) => {
            const user = new User({name : 'Al'});
            const validationResult = user.validateSync();
            const {message} = validationResult.errors.name;
            console.log(message);
            assert(message === 'Name must be longer than two charecters.');
            done();
});

你可能感兴趣的:(有效性测试)