23

私はMoqを初めて使用し、一般的にテストしているので、ここに私の初心者のQがあります.リクエストのステータスプロパティがMoqを使用して設定されているかどうかをテストするにはどうすればよいですか?

public class DudeManager
{
        private readonly IDRepository _repo;

        public DManager(IDRepository repo)
        {
            _repo = repo;
        }

        public void Create(Request r)
        {
            r.Status = Status.Submitted;
            _repo.AddRequest(r);
        }
}

以下よりも良いアプローチはありますか?多分VerifySetを使用していますか?

        [TestMethod]
        public void AddingNewRequestSetsStatusToSubmitted()
        {
            //Arrange
            var mock = new Mock<IDRepository>();
            var mockRequest = new Mock<Request>();
            var dManager = new DManager(mock.Object);

            //Act
            dManager.Create(mockRequest.Object);

            //Assert
            Assert.AreEqual(Status.Submitted, mockRequest.Object.Status);
        }

編集:これは、すべての役立つ提案の後に使用することになったアプローチです:

//Arrange
var request = new Request();
var mock = new Mock<IDRepository>();
var dManager = new DManager(mock.Object);
mock.Setup(x => x.AddRequest(It.IsAny<Request>()));

//Act
dManager.QueueNewRequest(request);

//Assert
Assert.AreEqual(RequestStatus.Submitted, request.Status);

このアプローチは私には正しいようです。誰かが違うと思いますか?

4

3 に答える 3

4
mock.Verify(m=>m.AddRequest(It.Is<Request>(r=>r.Status == expectedStatus)));

正しい を持つAddRequestパラメータ ( ) を使用してメソッドが呼び出されることを確認できます。また、ここではオブジェクトをモックする必要はありません。RequestStatusRequest

于 2013-06-04T22:45:25.430 に答える