私は奇妙な問題があります。私はあまりにもGUIの男であるMoqにはあまりよく知られていません。私は自分のコードでファクトリメソッドをモックしようとしました。ファクトリはこのように見え、多くのIO操作を行うISettingsインスタンスを返します。私はそれが私のテストを加速するためにメモリだけのISettingsインスタンスを返すようにします。Moq - mock.Object.MyMethod mockingが機能しません
public class SettingsFactory
{
internal ISettings mSettingsImpl;
internal virtual ISettings CreateOrGetSettings()
{
return mSettingsImpl ?? (mSettingsImpl = new XmlSettings());
}
}
とモック
var imocked = new Mock<SettingsFactory>() {CallBase = false};
imocked.Setup(x => x.CreateOrGetSettings()).Returns(new NonPersistingSettings());
var tryToSeeTheType = imocked.Object.CreateOrGetSettings();
tryToSeeTheTypeしかしXMLSettingsなくNonPersistingSettings私が期待するようです。結果をコードにステップすると、元のファクトリメソッドに直接入ります。私がここで間違っていることを示唆していますか?
Moqが内部メソッドにアクセスできるようにするには '[InternalsVisibleTo()]'を持っていますか? - http://stackoverflow.com/questions/1458300/moq-how-do-you-test-internal-methods –
私は私の単体テストプロジェクトにしか持っていませんでした。これをMoqに公開し、ISettingsFactoryインターフェイスを導入する必要がありました。そうしなければ、クラスを公開する必要がありました。このように動作します。提案ありがとう! –