Мне нужно запустить набор интеграционных/регрессионных тестов для нашего приложения, и приложение должно вести себя по-разному в разное время дня. Я не могу изменить системное время, так как от него зависят другие приложения. Я хотел бы издеваться над DateTime.Now для этой цели. Однако, когда я помещал насмешку в основной метод, возникали исключения. Когда я использую mocking в тесте nunit для того же приложения, он работает нормально. Можно ли использовать typemock только в контексте модульного теста? Могу ли я в любом случае запустить решение с включенным издевательством? Я также запускал решение через TMockRunner.exe, но у меня была та же проблема.
Спасибо!
Я вижу эту ошибку, когда запускаю метод, который Трэвис упомянул @Travis Illig. Код для оболочки:
class Program
{
static void Main(string[] args)
{
ExpectationsSetup();
ConsoleApplication2.Program.Main(args);
}
public static void ExpectationsSetup()
{
Isolate.WhenCalled(() => DateTime.Now).WillReturn(new DateTime(2010, 1, 2));
}
}
I see the following error:
Unhandled Exception: TypeMock.TypeMockException:
*** No method calls found in recording block. Please check:
* Are you trying to fake a field instead of a property?
* Are you are trying to fake an unsupported mscorlib type? See supported types
here: http://www.typemock.com/mscorlib-types
at gt.a(c0 A_0, Boolean A_1)
at bg.a(Boolean A_0)
at dt.b(Boolean A_0)
at i2.b(Boolean A_0)
at i2.a(Object A_0, Boolean A_1, Func`1 A_2, Action A_3, Action A_4, Action A
_5, Boolean A_6)
at i2.b(Object A_0)
at TypeMock.ArrangeActAssert.ExpectationEngine`1.a(TResult A_0)
at ConsoleApplication2Mock.Program.ExpectationsSetup() in C:\Users\shvenkat\D
ocuments\Visual Studio 2010\Projects\ConsoleApplication2\ConsoleApplication2Mock
\Program.cs:line 22
at ConsoleApplication2Mock.Program.Main(String[] args) in C:\Users\shvenkat\D
ocuments\Visual Studio 2010\Projects\ConsoleApplication2\ConsoleApplication2Mock
\Program.cs:line 14
Любая помощь будет оценена Спасибо!