Help!
Этот код отлично работает на моем локальном VS2010 с TypeMock, но не работает на нашем сервере сборки при запуске через NCover.
Мой код:
using (RecordExpectations expect = RecorderManager.StartRecording())
{
74: RequestDataLayer.GetAllUsers();
75: expect.Return(DatabaseUsers);
// other definitions to follow
}
Выводит эту ошибку в среде CruiseControl.Net:
Execute
TypeMock.TypeMockException:
*** Cannot use Return in this sequence, there must be a mocked statement first
Perhaps you are trying to mock a method from mscorlib
at TypeMock.RecordExpectations.b(String A_0)
at TypeMock.RecordExpectations.a(String A_0)
at TypeMock.RecordExpectations.Return(Object returnValue)
at Request.UserSyncTest.SyncData() in UserSyncTest.cs:line 75
Источник метода, который я пытаюсь смоделировать:
public class RequestDataLayer
{
public static User[] GetAllUsers()
{
// some LINQ magic to get users out of DB, then a .ToArray()
// returns an object array
}
}
Так что в этом нет ничего особенногоПомимо того, что метод является статическим.С тех пор я реорганизовал метод, чтобы сделать его нестатическим, эффекты внизу этой страницы.
Ранее у меня была похожая проблема, связанная с использованием синтаксиса Isolate <> TypeMock, я столкнулся сВ том же сценарии тесты работают нормально локально (через Gallio Test Runner), но не на сервере сборки (CC.Net, Gallio, TypeMock, NCover).
Я использую 6.0.4.0 TypeMock на обоихdev и build box.
Также, похоже, сработало перемещение строк 74 и 75 вниз в блоке RecordExpectations - ошибка не показывалась, НО вызов метода просто не подвергался насмешке.
Идеи приветствуются.