は、私は次のようにMVCのアクションを持っていると言う:不正アクセスの試みのケースをテストするにはユニットテストとSRP(試験方法スコープ/団体)
public ActionResult CustomerRecord(customerId)
{
if (_currentUser.CanViewCustomer(customerId))
return View();
else
{
// user has tried to access an unauthorised record,
// should not be here!
_logger.Log(new SecurityException());
return View("UnauthorizedAccess");
}
}
、どのように多くのテスト方法があるはず?
CustomerRecord_WithUnauthorizedUser_LogsExceptionAndReturnsUnauthorizedView
または私は2つのテスト書くん:私は、問題は技術的には、コントローラは、SRPを違反していることだと思いますが、私にはない
CustomerRecord_WithUnauthorizedUser_LogsException
CustomerRecord_WithUnauthorizedUser_ReturnsUnauthorizedView
を
つまり私は、単一のテストを書くのですかそれを自分自身の問題として見てください(あなたが同意しないなら、私を修正してください)。私はそれがどのようにテストメソッドにマップされているのか分かりません。メソッドの責任ごとに1つのテスト、またはメソッドを介して1つのルートごとに1つのテスト?
「あなたのコントローラは、必ずしも二つのことを行うことでSRPを違反していない - それはまだ一つだけの責任(制御)持っている」 私は、これは責任の非常にあいまいな定義であると怖いし。あなたはコントロールの責任をどのように定義しますか? 5人のプログラマーにこの質問をしてもらえれば、5つの異なる答えを得ることができますか? Managerという名前のクラスと同じです。 –