3

MicrosoftFakesを使用してAzureRoleEnvironmentAPIをモックしようとしています。問題は、単体テストでコードを実行できるようにシム/スタブを配置する方法が見つからないことです。

たとえば、次のコードがあるとします。

using Microsoft.WindowsAzure.ServiceRuntime;
// ...
Role role = RoleEnvironment.CurrentRoleInstance.Role;
int count = role.Instances.Count;

上記をFakesでモックして、単体テストで実行できるようにするにはどうすればよいですか?

これまでのところ、RoleInstanceクラスには、RoleInstanceからクラスを派生できない内部セッターを持つ抽象プロパティがあるように見えるため、私の試みは失敗します。これにより、RoleEnvironment.CurrentRoleInstanceにシムを提供できなくなります。

ところで、私は偽物に過度に依存することは有害であると見なされる可能性があることを十分に認識しています。重要なのは、本番環境とテスト実装とともに、RoleEnvironmentのラッパーがすでにあるということです。私がモックしようとしているコードは、私もテストしたい本番実装にあります。

4

1 に答える 1

1

残念ながら、今日、このコードをMicrosoftFakesで分離することは不可能だと思います。通常、RoleEnvironment.CurrentRoleInstanceプロパティをシムして、スタブRoleInstanceを返し、スタブRoleを返します。CurrentRoleInstanceプロパティをシムできます。ただし、ご指摘のとおり、RoleInstanceとRoleはどちらも内部コンストラクターを持つ抽象クラスであり、現在のバージョンのFakesではスタブ化できません。

于 2012-10-19T20:44:58.287 に答える