c# - 对 Viewmodel 进行单元测试

标签 c# .net silverlight unit-testing tdd

我是 TDD 的新手。我已经开始在 View 模型上创建我需要的属性作为普通自动属性。

public string Firstname { get; set; }

然后我创建一个测试

[TestMethod]
[Tag("Property")]
public void FirstNameTest()
{
    ViewModel = new CustomerViewModel();
    ViewModel.PropertyChanged += (s, e) =>
                                     {
                                         Assert.AreEqual("Firstname", e.PropertyName);
                                         Assert.AreEqual("Test", ViewModel.Firstname);
                                     };
    ViewModel.Firstname = "Test";
}

然后我将扩展实际实现以使测试通过,如下所示:

public string Firstname
{
    get { return _contact.FirstName; }
    set
    {
        if (_contact.FirstName == value)
            return;

        _contact.FirstName = value;

        RaisePropertyChanged(() => Firstname);
    }
}

我遇到的问题是 Aut 属性的测试仍然通过。有什么建议可以改进我的流程吗?

最佳答案

你可以这样做:

    [TestMethod]
    [Tag("Property")]
    public void FirstNameTest()
    {
        bool didFire = false;
        ViewModel = new CustomerViewModel();
        ViewModel.PropertyChanged += (s, e) =>
                                         {
                                             didFire = true;
                                             Assert.AreEqual("Firstname", e.PropertyName);
                                             Assert.AreEqual("Test", ViewModel.Firstname);
                                         };
        ViewModel.Firstname = "Test";
        Assert.IsTrue(didFire);
    }

关于c# - 对 Viewmodel 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4845332/

相关文章:

c# - 编码 C# 结构数组并在 COM 中使用它 - 什么是正确的编码属性

c# - 将 String 转换为相应的 Forms.Keys 值?

silverlight - Silverlight中的Bittorrent客户端

c# - 多线程机制可从winforms代码运行一些冗长的操作,并与GUI进行通信

C#:如何从某种文化中获取资源字符串

c# - 为 Web 表单使用 URL 路由,为 Favicon 使用 StopRoutingHandler

.net - .NET Framework 4客户端配置文件与.NET Framework 3.5客户端配置文件

c# - 绕过 silverlight tcp 端口限制

c# - Silverlight - 从部分中删除隐式样式

c# - 如何在 CultureInfo 中使用字符串插值?