node.jsとexpressを用いたサーバ構築についてわからないことがあったので質問します。

質問内容は

app.use(express.static(__dirname));

app.get('/', function(req, res){});

の記述順番によって意図しない結果が返ってくるというものです。


質問:
パターン1の位置にexpress.staticを記述し、http://localhost:3000にアクセスすると、index.htmlの内容が表示されるのはなぜでしょうか?
また、htmlのファイル名がindex.htmlの時にだけこの現象が起こるのですがなぜでしょうか?

想定している動き:
app.getではtestpage.html(存在しないhtml)を返すと記述しているので、localhost:3000にアクセスするとError: ENOENTとなるはずでは?

備考:
普段はパターン2の位置にexperss.staticを記述していました。2の位置にexpress.staticを記述しlocalhost:3000にアクセスするとError: ENOENTとなります(想定通り)

認識している点:

app.use(express.static(__dirname + '/public'));

指定したディレクトリ以下の静的ファイルを公開する

app.get('/', function(req, res){});

引数で指定されたGETリクエストに対して処理を行う。今回の質問の場合指定したhtmlファイルを返す。


以下サンプルを示します。

ディレクトリ構成
app
├package.json
├app.js
├node_modules
│ └express
└public
  └index.html

app.js

var express = require('express');
var app = express();
var http = require('http').Server(app);

//パターン1
app.use(express.static(__dirname + '/public'));

app.get('/', function(req, res){
  res.sendFile(__dirname + '/public/testpage.html');
});

//パターン2
//app.use(express.static(__dirname + '/public'));

http.listen(3000, function(){
 console.log('Web Server listening on *:3000');
});

index.html

<!doctype html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>testpage</title>
</head>
<body>
  <h1>Test Page</h1>
</body>
</html>

基本的なことで恐縮ですが教えていただけるとありがたいです。