在JavaScript中测试一个无效参数w/Chai

Testing an invalid argument w/ Chai in JavaScript

本文关键字:无效 一个 参数 Chai JavaScript 测试      更新时间:2023-09-26

前言:上周我开始修改JavaScript,所以这可能是一个愚蠢的问题,也可能不是(尽管我会打赌前者)。

我创建这个方法是为了返回一周中getDayOfTheWeekFromDateDate()初始化的那一天。我试图用chai创建一个测试,看看当它被输入一个伪参数(比如字符串)时它会做什么。

两个问题:

  1. 我检查的类型正确吗
  2. 如何用chai测试getDayOfTheWeekFromDate的伪参数?

    DateHelper.prototype.getDayOfTheWeekFromDate = function(inputDate) {
        if (inputDate instanceof Date) {
            inputDate = new Date();
            var dayOfTheWeek = inputDate.getDay();
            switch(dayOfTheWeek) {
                case 0: return "Sunday";
                case 1: return "Monday";
                case 2: return "Tuesday";
                case 3: return "Wednesday";
                case 4: return "Thursday";
                case 5: return "Friday";
                case 6: return "Saturday";
                default: return;
            }
        } else {
            // I'm shooting for doing nothing if the input isn't a Date()
            // How would I test this?
            return;
        }
    };
    

我已经设置了一个测试类来测试Date助手类。

'use strict';
var chai = require('chai');
var expect = chai.expect;
var DateHelper = require('../date_helper');
chai.config.includeStack = true; // true enables stack trace
describe('DateHelper', function() {
    context('With a valid date value, getDayOfTheWeekFromDate', function() {
        it('should return Tuesday', function() {
            expect(subject.getDayOfTheWeekFromDate(new Date())).to.eq('Tuesday');
        });
    });
});

我试过了,但当我给初始化器提供一个字符串时,控制台会发出警报,不知道什么是未定义的。我应该在这里测试什么?:

context('With a invalid date value, getDayOfTheWeekFromDate', function() {
    it('should return nothing', function() {
        expect(subject.getDayOfTheWeekFromDate('bogusArgument').to.be.undefined;
    });
});

如果所有括号都平衡,它会很好地工作:

expect(subject.getDayOfTheWeekFromDate('bogusArgument')).to.be.undefined;
                            //                         ^
                            //    this one was missing /