私は以下の(簡略化した)コードを持っています。私は完全には理解していないモックによるNunitテスト。インタフェースのインスタンス
ノート、射出ユニットテストとしてpublic static void Register(Container container)
{
container.Register<IService, Service>();
}
は私に新たに追加されました。このような
public class Controller
{
private readonly IService _service;
public Controller(IService service)
{
_service = service;
}
public async Task<IHttpActionResult> Create(MyObject object)
{
var result = _service.method(object);
if (!result.Succeeded)
{
return this.GetErrorResult(object);
}
}
}
とSimpleInjectorは_serviceとその実装クラス間の依存関係を注入するために使用され、彼らは、しかし、学習しています。
私がSwaggerでアプリケーションを実行すると、すべて正常に動作しています。
スワッガーでアプリケーションを実行すると、Register
関数が呼び出されます。
今、私はセットアップにNUnitのを使用して、いくつかのユニットテストをしようとしていますが、このようなIServiceオブジェクトのモックています:
var Service = new Mock<IService>();
Controller _controller = new Controller(Service.Object);
_controller.Create(new MyObject object());
これまでの私には正しいように思われる - 私はわからないが?
ユニットテストの場合、result
は常にヌルです - 私のインターフェースのモックに問題があると思われます - それはメソッドを見つけているようには見えません。彼はデバッガにintを表示しません。
単体テストでは、Register
メソッドが呼び出されません。私はそれを依存関係を登録するために呼び出すよう試みましたが、それは助けにはなりません。
私が上に述べたように、これは私には全く新しいものであり、私はこのすべてについて私の理解の端に立っています。
私は考えが尽きていて、ここからどこを見るかわからないので、どんな助けでも大歓迎です。
EDIT:
元の質問には、次のいた:
私が更新したpublic async Task<IHttpActionResult> Create(string content)
:
public async Task<IHttpActionResult> Create(MyObject object)
誰もが私がMyObject
に、一般的な参照を渡すことができますどのように助言することができますこのクラスのインスタンスを作成する必要はありません。
基本的に、このクラスのインスタンスは、そのインスタンスを作成せずに渡されることを伝えたいと思います。
私は次のことを試してみました:
Service.Setup(x => x.method(It.IsAny<MyObject>())
but it says cannot convert MethodGroup to MyObject
、ここではIServiceの定義です:
public interface IService
{
IdentityResult method(ApplicationUser user, UserLoginInfo login);
}
右。テストのためにやりたいことをするためにモックをセットアップする必要があります。クイックスタートはこちらhttps://github.com/Moq/moq4/wiki/Quickstart – Nkosi
モックオブジェクトでモックセットアップをしましたか? – ganeshran
@Alex、単純化された例を削除して、必要なものを正確に尋ねる必要があるかもしれません。私たちは推測のままにされるためです。あなたが広範なAsp.Net Identityフレームワークを使っているようです。具体的に絞り込んでください – Nkosi