#サーバレスシングルページアプリケーション ルーティング
ルータ関数のテストを成功させるのに1時間もかかってしまった...
原因
ルータ関数とテスト関数の両方で、ビューを編集するためのjQueryでクラスセレクタの頭に.をつけていなかった。
(一番下の行)
learnjs.showView = function(hash) {
// ハッシュとルート関数の対応関係を持つオブジェクトをroutesオブジェクトとする
var routes = {
'#problem-1': learnjs.problemView
};
var viewFn = routes[hash];
if(viewFn){
$('view-container').empty().append(viewFn());
}
}
なんでこんなことが起きてしまったのか...
テキスト通りにやってもうまくいかない段階で早めにWebインスペクターを起動して、テストにブレークポイントを挿入して一つづつ動作を見るべきだった。
こちらがあるべき姿のスクショです。

この方法、今ブログ書いててようやく気がついた...
よかったこと
開発の順番はちゃんとやれてよかった。
まずはルータ関数さえない状態でテストを書く。次に動かして失敗させる。
それが終わったらアサーションを成功させるべく、名前空間の定義→関数の定義→と進める。