Как я могу протестировать событие контроллера MVC

Если вы действительно хотите, вы можете сделать свой собственный, но я бы не стал, потому что у вас гораздо больше функциональности с s/// ... вы можете встроить эту функциональность в свою функцию, но зачем воссоздавать то, что уже существует? 112]

#!/usr/bin/perl -w    

use strict;     

   main();   

   sub main{    
      my $foo = "blahblahblah";          
      print '$foo: ' , replace("lah","ar",$foo) , "\n";  #$foo: barbarbar

   }        

   sub replace {
      my ($from,$to,$string) = @_;
      $string =~s/$from/$to/ig;                          #case-insensitive/global (all occurrences)

      return $string;
   }
7
задан Spoike 5 November 2009 в 07:36
поделиться

1 ответ

Это одно из разделений касается принципов MVC. При модульном тестировании метода вы тестируете сам метод независимо от примененных к нему фильтров. (А OnException () и OnActionExecuting () на самом деле просто прославленные фильтры.)

Если вы хотите протестировать эти другие методы независимо, вы можете это сделать. Обычно для этого нужно вызывать фильтры следующим образом:

((IActionFilter)controller).OnActionExecuting(...)
((IExceptionFilter)controller).OnException(...)

Вам нужно будет создать объекты контекста для передачи этим методам. В конце, у вас есть три модульных теста: один для OnActionExecuting (), один для OnException () и один для самого метода, который вы тестируете. Хорошая вещь в этой настройке заключается в том, что после того, как вы один раз протестировали фильтры, вам больше не нужно беспокоиться о них для любых других модульных тестов.

Например, если у вас есть Method1 (), Method2 () и Method3 (), вам не нужно тестировать каждую комбинацию метод + фильтры. Просто создайте пять модульных тестов: OnActionExecuting (), OnException (), Method1 (), Method2 () и Method3 (). Это исключает избыточное тестирование и упрощает отслеживание потенциальных ошибок в вашем коде.

о них больше не нужно беспокоиться для любых других модульных тестов.

Например, если у вас есть Method1 (), Method2 () и Method3 (), вам не нужно тестировать каждую комбинацию метода + фильтров . Просто сделайте пять модульных тестов: OnActionExecuting (), OnException (), Method1 (), Method2 () и Method3 (). Это исключает избыточное тестирование и упрощает отслеживание потенциальных ошибок в вашем коде.

о них больше не нужно беспокоиться для любых других модульных тестов.

Например, если у вас есть Method1 (), Method2 () и Method3 (), вам не нужно тестировать каждую комбинацию метода + фильтров . Просто сделайте пять модульных тестов: OnActionExecuting (), OnException (), Method1 (), Method2 () и Method3 (). Это исключает избыточное тестирование и упрощает отслеживание потенциальных ошибок в вашем коде.

15
ответ дан 6 December 2019 в 14:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: