我的測驗代碼由于未知原因引發了以下錯誤。可能設定了不正確的模擬,但我不知道如何正確地做,請幫忙。
訊息:測驗方法 GUI_VIS.MsTests.LoginTest.TestEmptyIsAdminWindow 拋出例外:System.NotSupportedException:不支持的運算式:x => x.GetAllEmailAsync("Pepa", "Heslo", new Worker() { }) 不可覆寫的成員(此處: GenericController.GetAllEmailAsync) 不能用于設定/驗證運算式。
Stack Trace: Guard.IsOverridable(MethodInfo method, Expression expression) line 109 MethodExpectation.ctor(LambdaExpression expression, MethodInfo method, IReadOnlyList 1 arguments, Boolean exactGenericTypeArguments, Boolean skipMatcherInitialization, Boolean allowNonOverridable) line 87 ExpressionExtensions.<Split>g__Split|5_0(Expression e, Expression& r, MethodExpectation& p, Boolean assignment, Boolean allowNonOverridableLastProperty) line 219 ExpressionExtensions.Split(LambdaExpression expression, Boolean allowNonOverridableLastProperty) line 150 Mock.SetupRecursive[TSetup](Mock mock, LambdaExpression expression, Func4 setupLast, Boolean allowNonOverridableLastProperty) line 643 Mock.Setup(Mock mock, LambdaExpression expression, Condition condition) line 498 Mock 1.Setup[TResult](Expression1 運算式) 第 452 行 LoginTest.TestEmptyIsAdminWindow() 第 48 行 ThreadOperations.ExecuteWithAbortSafety(Action action)
[TestMethod]
public async Task TestEmptyIsAdminWindow()
{
Login login = new Login();
Mock<GenericController> gcMock = new Mock<GenericController>();
GenericController gc = new GenericController();
login.IdBoxGet().Text = "John";
login.PasswordBoxGet().Text = "Password";
ObservableCollection<Worker> workers = new ObservableCollection<Worker>() {
new Worker
{
Name = "John",
My_password = "Password",
Role = "Boss"
}
};
gcMock.Setup(x => x.GetAllEmailAsync("John", "Heslo", new Worker() { }))
.ReturnsAsync(workers);
var workersFromMocking = await gc.GetAllEmailAsync("John", "Password", new Worker() { });
Assert.IsTrue(workersFromMocking[0].Name == "John");
}
uj5u.com熱心網友回復:
首先,您沒有在任何地方使用 gcMockandlogin物件。在您的情況下,SUT(被測系統)是gc. 模擬應該是gc在呼叫您要測驗的方法時使用的東西,而不是 GenericController 本身。
其次,您的錯誤表明該GetAllEmailAsync方法不可覆寫。Moq 只能使用抽象、虛擬或介面方法。請參閱此問題的已接受答案以進行澄清。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/513961.html
標籤:C#单元测试嘲弄
上一篇:0%覆寫率Junit4
