Tôi còn khá mới với thử nghiệm đơn vị trong C # và học cách sử dụng Moq. Dưới đây là lớp học mà tôi đang cố gắng kiểm tra.
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 của 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:
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 xem phương thức "MyMethod" có được gọi hay không. Tui bỏ lỡ điều gì vậy?
xin lỗi..tôi đã chỉnh sửa câu hỏi của mình ..
—
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 DoS Something. Sau đó, bạn cần truy cập công khai, sau đó làm cho DoS Something ả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
Cám ơn phản hồi của bạn. Tôi đã đặt sai các đối số trong khi thiết lập phương thức giả ..
—
user591410
"Không có thiết lập được cấu hình." Có thể gây hiểu nhầm. Bạn không cần thiết lập hành vi cho các phương thức sẽ được gọi. Và cũng nhớ thực hiện phương thức "Xác minh" SAU phương thức bạn đang kiểm tra nên được gọi (vì vậy nó ổn trong trường hợp của bạn).
—
Sielu
SomeClass
không có định nghĩa choMyMethod(string)
, có vẻ như nó không có.