2016-04-20 10 views
0

はじめに:先週、私はJavaScriptで微調整を開始したので、これは愚かな疑問であるかもしれません(私は前者を賭けるでしょう)。JavaScriptで無効な引数を調べる

getDayOfTheWeekFromDateDate()で初期化された曜日を返すようにこのメソッドを作成しました。私はchaiでテストを作成して、偽の引数(文字列のようなもの)が与えられたときの動作を確認しようとしています。

つの質問:

  1. 私が正しくタイプをチェックしていますか?
  2. getDayOfTheWeekFromDateの偽の引数をchaiでテストするにはどうすればよいですか?

    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; 
        } 
    }; 
    

私は日付のヘルパークラスをテストするために設定したテストクラスを持っています。

'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; 
    }); 
}); 

答えて

1

それが正常に動作します:

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

ありがとうございました!私のリンターはそれを選んでいませんでした。優れた目!私が作成した方法は健全で、それは規則に従っていますか? – Adrian

+1

@AdrianB私は個人的に、 'else'と' default'ブランチのラッピングを削除し、関数の最後の行としてfall-through 'return;'を持っています。 – zerkms