【问题标题】:Unit Testing an Xml format function对 Xml 格式函数进行单元测试
【发布时间】:2023-03-26 02:10:02
【问题描述】:

我正在尝试为xml.Format 函数创建一个单元测试,但我似乎无法获得customerName 值,我不知道我在这里做错了什么。请赐教。

[Test]
        public async System.Threading.Tasks.Task Format()
        {
            var script = "var xml = $Xml.Parse('<Customer><Name>John</Name></Customer>');  $Probe.SetValue('a', xml.Format('<p>Hello {{Customer/Name}}!</p>') + '');";
            var probe = await this.SaveProcessAsync("", script, "");

            // ensure our proxy is called
            Assert.AreEqual("<p>Hello John!</p>", probe.GetValue("a"));
        }

这是 NUnit 输出,

预期:Hello John!

但是是:"Hello !"

【问题讨论】:

  • 单元测试告诉您生产代码中存在问题。找出为什么它没有将 {{Customer/Name}} 替换为 John。
  • 什么是ProbeCustomer/Name 应该返回什么?除此之外,您还有probeProbe。哪一个是正确的?
  • probe 用于执行脚本,并且没有 2 个探针,其中一个在脚本中,一个是 C# 中的对象。并且 Customer/Name 显然应该在 下返回 ,即 John ,我不太明白你的问题。

标签: c# xml unit-testing xml-parsing nunit


【解决方案1】:

事实证明,如果你这样做

xml.Format('<p>Hello {{Customer/Name}}!</p>')

它进入客户根目录,然后尝试在客户下找到名称。由于没有,它返回null。

因为它已经检查了它找到的第一个根目录,所以我只是删除了 Customer/ 并且它工作正常。

xml.Format('<p>Hello {{Name}}!</p>')

结果是:

你好约翰!

【讨论】:

    猜你喜欢
    • 2013-05-22
    • 1970-01-01
    • 2019-05-16
    • 2021-01-03
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    相关资源
    最近更新 更多