考虑我的第一次尝试,F# 中的一个简单类型,如下所示:
type Test() =
inherit BaseImplementingNotifyPropertyChangedViaOnPropertyChanged()
let mutable prop: string = null
member this.Prop
with public get() = prop
and public set value =
match value with
| _ when value = prop -> ()
| _ ->
let prop = value
this.OnPropertyChanged("Prop")
现在我通过 C# 测试它(这个对象被暴露给一个 C# 项目,所以明显的 C# 语义是可取的):
[TestMethod]
public void TaskMaster_Test()
{
var target = new FTest();
string propName = null;
target.PropertyChanged += (s, a) => propName = a.PropertyName;
target.Prop = "newString";
Assert.AreEqual("Prop", propName);
Assert.AreEqual("newString", target.Prop);
return;
}
propName
已正确分配,我的 F# Setter 正在运行,但第二个断言失败,因为基础值prop
未更改。这种对我来说很有意义,因为如果我mutable
从prop
字段中删除,不会产生错误(应该是因为我试图改变值)。我想我一定错过了一个基本概念。
prop
在课堂上重新绑定/变异以Test
通过单元测试的正确方法是什么?