c# - 如何最小化一个只读属性,其值取决于类方法调用?

标签 c# methods interface moq

我有一个界面,像这样

public interface IContent 
{bool IsCheckedOut {get; };    
 void CheckOut(); 
}

CheckOut() 方法会影响属性 IsCheckedOut 返回的值。例如,在调用 CheckOut() 方法之前,IsCheckedOut 返回 false。之后,IsCheckedOut 属性返回 true。 我想像这样测试 CheckOut 方法

[TestMethod]
public void CheckOutSetsCheckedOutStatusToTrue()
{
    var content  =  new Mock <IContent>();    

  // test mock CheckOut() method, something like this
   content.Setup(x => x.CheckOut()); 
   content.Object.CheckOut();

   // Verify 
    Assert.AreEqual(true, content.IsCheckedOut); //Test works as expected
}

有人知道我该怎么做吗?

非常感谢。

最佳答案

试试这个:

var isCheckedOut = false;
content.Setup(x => x.CheckOut()).Callback(() => { isCheckedOut = true; });
content.SetupGet(x => x.IsCheckedOut).Returns(() => isCheckedOut);
content.Object.CheckOut();

关于c# - 如何最小化一个只读属性,其值取决于类方法调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32664878/

相关文章:

c# - 查找两个多边形之间的最短距离(SqlGeography c#)

c# - 为什么 C# 预先绑定(bind)局部变量?

java - 将多个 Java 方法转换为非阻塞线程运行?

c# - 使用 NInject 为通用接口(interface)注册通用类

Java:为什么接口(interface)中的声明不够?

c# - 如何从 Main 中获取 IConfiguration?

c# - 通知方法调用者该方法抛出的异常类型的属性

javascript - JS : Create a method to return an array that does not include the index values from the array passed to my method

java - 清除数独表

C++ 为 API 中定义的结构创建父类(super class)