私はレストラン/ホテル/その他の特別な取引があるかどうかを分類するための分類器を書いています...これは外部サイトを分析するためのWebクローラーの一部です。 私は食事をしましたか?()メソッドは、テキストを受け取り、そのテキストが食事に関する取引だと考えるならtrueを返します。単純なキーワードマッチングだけが使用されるので、100%正確にすることはできません。例がある階級階級のテスト
def meal?(text)
!text.match(/restaurant|meal|wine|.../i).nil?
end
今、私はそれのためのテストを書いており、2つの質問があります。最初の1つは、ユニットテストでこれらのキーワードのすべてを再度リストするのは少し冗長だと思うということです。どう思いますか?
2番目の質問: ソース管理に.htmlファイルがあります。これは、クローラの解析機能をテストするために使用されます。理論的にはすべての項目が合格するはずですので、この分類テストでそのhtmlを使用し、そのhtmlを解析して、各取引の説明をこのメソッドにフィードします。
1つの欠点は、.htmlが外部サイトから取得されていることです。サイトがレイアウトを変更すると、この.htmlファイルが更新されます。この分類テストも変更する必要があります。しかし、これは大丈夫だと思います。
これはお勧めですか?私はこの方法を考えました。なぜなら、その.htmlから情報を抜き出して不安を感じ、それをテストスクリプトそのものに置く(DRYではなく、テストスクリプトをかなり大きくする)からです。解析された記述を与えることは、「これは開発者から必要な詳細を隠す」や「これはレポートを生成することができない」のような基本的なテスト法に違反しますか?
おかげさまで、私のテストでは、関連する段落を取り出し、それぞれに機能(文字列を受け入れる)を分類する段階を設定しています。 私はそれについて気に入らない唯一のことは、パラグラフは本当に長くなり、画面全体をカバーできるということです。しかし特別なケースです。 – lulalala