ウェブサイトの設定ページを作成しました。このページでは、ユーザーが操作できる一連のサイト全体の設定が表示されます。ユーザーが設定を選択すると、ページが自動的に ajax リクエストを実行して設定をデータベースに送信するようにしました。私の質問は、これをどのように行うかです。
最初は、リポジトリへの呼び出しを行っただけです。データを取得するための1回の呼び出し、それをViewModelに入れ、そのViewModelをViewに渡し、ajaxコントローラーが設定をデータベースに送り返しました。この方法は、必要に応じて偽のリポジトリを渡すだけでよいため、最初は特に単体テストの目的で最善の方法のように思えました。次に、ユーザーが設定を取得できるように、リポジトリを呼び出して、必要な設定名を渡します。
それから私は素晴らしいアイデアを思いつきました。私は SiteWideSettings というシングルトン クラスを作成し、サイトで可能な各設定はサイトのプロパティでした。SiteSettings が初めて呼び出されると、すべての設定が読み込まれます。いずれかのプロパティで Set が呼び出されると、リポジトリ関数が呼び出されて設定が送信されます。私の設定ビューでは、SiteWideViewOptions.Current を渡すだけで、ajax 呼び出しで、変更されたプロパティを更新しています。これは私にとってはうまくいきますが、コンストラクターがプライベートであるため、シングルトンのコンストラクターにリポジトリを実際に渡すことができないため、単体テストはあまりできません。私が現在持っているものはうまく機能していますが、それが最善の解決策であるとは思えず、ここでは単体テストは実際には不可能です。
次のいずれかを考えていますが、どれが最適かわかりません。
- リポジトリ プロパティを SiteWideSettings クラスに追加する
- 関数を SiteWideSettings クラスに追加してリポジトリに渡す
- これにはシングルトンをまったく使用せず、このアイデアを思い付く前に行っていたことに戻ります
これに関するコメントは大歓迎です。
注: 知っています。この場合、最初にテストを作成しなかったため、ユニットテストが間違っていることはわかっています。そのことで私を叱らないでください..私はすでに自分自身を叱ったので、次のタスクでは二度とやりません約束 :)