私はRhinomocksフレームワークをもっとよく理解しようとしています。私はRhinomocksのExpectメソッドを理解しようとしています。rhinomocks設定期待、単体テスト常時受け渡し
[TestMethod]
public void Create_ValidModelData_CreatesNewEventObjectWithGivenSlugId()
{
//Arrange
var eventList = new List<Event>() { new Event() { Slug = "test-user" } };
_stubbedEventRepository.Stub(x => x.GetEvents())
.Return(eventList);
_stubbedEventRepository
.Expect(x => x.SaveEvent(eventList.SingleOrDefault()))
.Repeat
.Once();
var controller = new EventController(_stubbedEventRepository);
EventViewModel model = new EventViewModel();
//Act
//controller.Create(model); COMMENTED OUT
//Assert
_stubbedEventRepository.VerifyAllExpectations();
}
私はSaveEvent(...)メソッドgetのは一度だけ呼び出された場合にのみ渡すために、このコードを理解して考えた:
は、ここで私が書いたユニットテストです。ただし、controller.Create(model)をコメントアウトしても、テストは引き続き実行されます。コントローラ内で作成します。作成(モデル)は、SaveEvent()メソッドが呼び出される場所です。
私は次のことを試してみました:
_stubbedEventRepository
.Expect(x => x.SaveEvent(eventList.SingleOrDefault()));
をしかし、それはまだ私が間違ってスタックオーバーフローが何をやっている、すべての時間を渡しますか?私がオンラインで見た情報源は私を助けることができませんでした。 VerifyAllExpectations()が単体テストを成功させるのはなぜですか? ありがとうございました!
ここでは、コントローラのコンストラクタのボディです:
public EventController(IEventRepository eventRepository)
{
_eventRepository = eventRepository;
}
は、編集:
// member variables
private IEventRepository _stubbedEventRepository;
[TestInitialize]
public void SetupTests()
{
_stubbedEventRepository = MockRepository.GenerateStub<IEventRepository>();
}
どのように '_stubbedEventRepository'を作成していますか? 'MockRepository.GenerateMock()'を使ってください。 –
vcsjones
私が使用していたものを表示するように投稿を更新しました。私はstubbedRepositoryをアサートしているので、間違ったGenerateStubを使用していました – Short