私は他人のコードの単体テストを書いていますが、これは変更できません。C#でインタフェースを持たず仮想メソッドを持たないクラスを模擬する方法は?
は、私が持っていると言う:で使用されて
class BadClass
{
public BadClass()
{
// the service isn't going to be running during testing
// it also has no interface
someFlag = AGloballyStoredService.getSomeFlag();
}
public bool someFlag;
}
:私はBadClassを模擬したい
public void AnotherBadClassConstructorTest()
{
BadClass badClass = new BadClass();
AnotherBadClass anotherBadClass = new AnotherBadClass(badClass);
Assert.IsNotNull(anotherBadClass);
}
が、それはあります
class AnotherBadClass
{
public AnotherBadClass(BadClass badClass)
{
someFlag = badClass.someFlag;
}
public bool someFlag;
}
は、私がテストをしたいと言いますインタフェースがなく、サービスが実行されていない場合は、そのコンストラクタで失敗します。
私がテストしているコードを変更できないことを考慮して、この作業を行う簡単な方法はありますか?
私は、既存のコードベースを修正するか、このモジュールの10%未満のカバレッジを受け入れる必要があることを伝えることができます。
[Microsoft Fakes](https://msdn.microsoft.com/en-us/library/hh549175.aspx)のような特殊なライブラリを使用して、それらをリダイレクトする方法をインターセプトして書き直す必要がありますあなたのモック。 –
コードに触れることができないのであれば、ここでは統合テストだけが実際にはオプションになるのではないかと思います。 –