ホームページ > バックエンド開発 > Golang > App Engine 単体テストで Go テンプレートを使用するときに発生する「そのようなファイルまたはディレクトリはありません」エラーを解決する方法

App Engine 単体テストで Go テンプレートを使用するときに発生する「そのようなファイルまたはディレクトリはありません」エラーを解決する方法

Mary-Kate Olsen
リリース: 2024-12-01 09:04:12
オリジナル
573 人が閲覧しました

How to Resolve

Go 単体テストで App Engine のテンプレート パスを指定する方法

App Engine で Go の組み込みテンプレート パッケージを使用する場合、単体テスト中にテンプレート ファイルへのパスを指定するのは困難な場合があります。パスはローカル開発中に機能しますが、単体テストを実行すると、多くの場合、「パニック: [テンプレート パス] を開きます: そのようなファイルまたはディレクトリはありません。」というエラーが発生します。

この問題は、単体テスト中の作業ディレクトリがそれはアプリを実行しているときです。開発モードでは、現在のディレクトリがアプリのルートとなり、相対パスを正しく解決できます。ただし、単体テスト中に、現在のディレクトリがテスト ファイルを含むフォルダーに切り替わり、相対パスが失敗します。

この問題に対処するには、主に 2 つのオプションがあります:

1.作業ディレクトリをアプリのルートに変更する

相対パスを使用するコードを実行する前に、os.Chdir() を使用して作業ディレクトリをアプリのルート フォルダーに設定します。例:

if err := os.Chdir("../.."); err != nil {
    panic(err)
}
ログイン後にコピー

また、これをテスト ファイル内の init() 関数で実行して、テスト メソッドの前に確実に実行することもできます。

2.コードのリファクタリング

相対パスを使用するコードの場合は、相対パスのベース パスのパラメーターを受け入れるようにコードを変更します。このベース パスは単体テストの実行時に別の方法で設定できるため、相対パスを正しく解決できます。例:

base := "" // Set to "" when running normally and to app root when testing
tplPaths := append([]string{"templates/index.html"}, templates...)
ログイン後にコピー

これらの手法の 1 つを組み込むことで、単体テスト中にテンプレート パスが正しく解決されるようになり、コードを効果的にテストできるようになります。

以上がApp Engine 単体テストで Go テンプレートを使用するときに発生する「そのようなファイルまたはディレクトリはありません」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート