Tôi mới vào Moq và thử nghiệm nói chung vì vậy đây là noobish tôi Q. Làm thế nào để kiểm tra nếu Status tài sản trên Yêu cầu đã được thiết lập sử dụng Moq?Kiểm tra nếu một tài sản được thành lập - sử dụng 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);
}
}
Có cách tiếp cận nào tốt hơn những điều sau không? Có thể sử dụng 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);
}
EDIT: Đây là phương pháp tôi đã kết thúc sử dụng sau khi tất cả những gợi ý hữu ích:
//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);
cách tiếp cận này có vẻ đúng với tôi. Có ai nghĩ khác không?
Tôi tin rằng VerifySet phù hợp nhất. – neontapir
Bạn có thể chỉ cho tôi một ví dụ về cách sử dụng nó không? Tôi đã thử bằng cách sử dụng VerifySet nhưng nó thổi lên trên tôi. –
Tôi không thuyết phục VerifySet làm bất cứ điều gì cả, tôi chưa bao giờ có thể thất bại một bài kiểm tra với nó, luôn luôn vượt qua. Tôi đi qua trình gỡ lỗi và thấy giả của tôi là callbase đúng, tài sản trong câu hỏi là null, không có invocations. VerifySet với một vale "Xin chào thế giới" và điều đi ... vượt qua. Tôi sẽ đi với các đơn vị kiểm tra khuôn khổ và khẳng định điều này bằng nhau. –