Tôi khá mới để thử nghiệm đơn vị trong C# và học cách sử dụng Moq. Dưới đây là lớp mà tôi đang cố gắng kiểm tra.Xác minh cuộc gọi phương thức bằng cách sử dụng Moq
class MyClass
{
SomeClass someClass;
public MyClass(SomeClass someClass)
{
this.someClass = someClass;
}
public void MyMethod(string method)
{
method = "test"
someClass.DoSomething(method);
}
}
class Someclass
{
public DoSomething(string method)
{
// do something...
}
}
Dưới đây là TestClass tôi:
class MyClassTest
{
[TestMethod()]
public void MyMethodTest()
{
string action="test";
Mock<SomeClass> mockSomeClass = new Mock<SomeClass>();
mockSomeClass.SetUp(a => a.DoSomething(action));
MyClass myClass = new MyClass(mockSomeClass.Object);
myClass.MyMethod(action);
mockSomeClass.Verify(v => v.DoSomething(It.IsAny<string>()));
}
}
tôi nhận được ngoại lệ sau đây:
Expected invocation on the mock at least once, but was never performed
No setups configured.
No invocations performed..
Tôi chỉ muốn xác minh nếu phương pháp "MyMethod" đang được gọi hay không. Tui bỏ lỡ điều gì vậy?
Cảm ơn trước!
Điều đó sẽ không biên dịch nếu 'SomeClass' không có định nghĩa cho' MyMethod (chuỗi) ', có vẻ như không. –
xin lỗi .. Tôi đã chỉnh sửa câu hỏi của tôi .. – user591410
Bạn đang đi đúng hướng, nhưng có lỗi trong mã được đăng. Nó sẽ không biên dịch - vỏ trên Someclass, trả về void trên DoSomething. Sau đó bạn cần truy cập công cộng, sau đó làm cho DoSomething ảo. Trong ngắn hạn, bạn có thể có một lỗi trong mã sản xuất của bạn quá. – TrueWill