0

我在 WPF 中创建了简单的 GUI。我想展示一些从数据库中获取的数据。但是现在我只有 GUI 和几个对接收到的数据进行简单计算的函数。我知道我的目标是创建会生成一些“错误”数据的模拟对象,但我不知道如何开始。你能告诉我如何创建其中一个,然后我可以类似地创建其余的。这是我的计算类:

        public Statistic showUsersPostCount(Options options)
    {
        Query q = (Query)this.client.DoQuery();
        q.AddAuthor(options.Login);
        q.SetSinceDate(options.DateFrom);
        q.SetUntilDate(options.DateTo);
        q.AddTitleWord(options.Discussion);
        List<Entity> list = (List<Entity>)q.PerformQuery();

        Statistic statistic = new Statistic();

        statistic.UsersPostCount = list.Count;
        return statistic;
    }

这个函数返回一些简单的统计数据。但是我没有查询类的代码。我怎样才能模拟这个类的对象?

4

3 回答 3

0

使用提供的代码......您不能,为了模拟它,您需要某种方式为依赖项提供替代对象(在这种情况下是 .client 对象)。

事实上,该方法只有一个输入“选项”,但对那里的代码的影响相对较小。

此外,您声称要展示一个类的示例——但事实并非如此——您只是展示了一个名为 showUsersPostCount 的方法。

于 2012-01-12T23:19:56.430 回答
0

假设您的代码是要模拟的类中的方法,那么第一步是为要实现的类创建一个接口,如果您还没有这样做的话。

然后,您可以将您的接口(而不是您的具体类)传递给一个模拟框架(我使用了 Moq,但我认为 nmock 的工作方式非常相似)。然后,您可以填写您希望属性/方法通过模拟框架返回的模拟数据。

于 2012-01-12T23:41:42.950 回答
0

正如其他人所提到的,您的代码不能按原样模拟......至少使用标准模拟工具。总是有Moles,它以允许您“模仿不可模仿者”而自豪。Moles 将允许您按原样模拟该方法。

也就是说,如果你不得不求助于 Moles 来模拟你在内部控制的东西(该工具实际上是为模拟外部依赖项而设计的,例如数据库和文件等等),你可能应该考虑让你的设计更加灵活。总体而言,可测试(即没有 Moles 的可测试)设计更有可能是一个好的设计。

于 2012-01-13T00:10:57.467 回答