ヘルプ!
このコードは、TypeMockを使用するローカルVS2010では正常に機能しますが、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
}
}
したがって、メソッドが静的であるという事実を除けば、特別なことは何もありません。それ以来、メソッドをリファクタリングして非静的にし、このページの下部に影響を与えました。
以前にも同様の問題がありました。これは、TypeMockのIsolate <>構文を利用することと関係があり、同じシナリオに遭遇しました。テストはローカルで正常に機能しますが(Gallioテストランナーを介して)、ビルドサーバー(CC.Net)で失敗します。 、Gallio、TypeMock、NCover)。
開発ボックスとビルドボックスの両方で6.0.4.0のTypeMockを実行しています。
また、うまくいったように見えるのは、RecordExpectationsブロックの行74と75を下に移動することでした。エラーは表示されませんでしたが、メソッド呼び出しは単に黙ってモックされませんでした。
アイデアは大歓迎です。