Có thể kiểm tra xem một phương pháp đã được gọi bằng cách sử dụng Moq and dependency injection hay không. Tuy nhiên, có thể kiểm tra nếu một phương thức trong một lớp gọi một phương thức khác trong cùng một lớp không?Kiểm tra xem phương pháp trong ClassA đã được gọi từ một phương pháp khác trong ClassA
Ví dụ, tôi muốn kiểm tra xem nếu tôi đăng nhập một ngoại lệ nhất định, thì thông báo thông tin cũng sẽ được ghi lại.
Phương pháp này là:
public void Error(string message, Exception exception, long logId = 0)
{
var int32 = (int)logId;
Info("Id was converted to an int so that it would fit in the log: " + logId, int32);
Error(message, exception, int32);
}
Đây là nỗ lực của tôi tại đơn vị thử nghiệm nó. Bài kiểm tra thất bại, có cách nào mà nó có thể được thực hiện?
void logging_an_error_with_a_long_id_also_logs_info()
{
var mock = new Mock<ILogger>();
var testedClass = new Logger();
var counter = 0;
testedClass.Error("test" + counter++, new Exception("test" + counter), Int64.MaxValue);
mock.Verify(m => m.Info(It.IsAny<string>(), It.IsAny<int>()));
}
Kể từ khi Info
và Error
phương pháp này trong cùng một lớp (ClassA), tôi không tin rằng tôi có thể vượt qua ClassA như một sự phụ thuộc vào ClassA. Vì vậy, nó không cần thử nghiệm?
Có giao diện [tại đây] (http://stackoverflow.com/questions/1417048/how-to-verify-another-method-in-the-class-was-called-using-moq). – dee