SpecFlow在后面生成两个不同的代码,一个不起作用

问题描述 投票:0回答:1

我在两个不同的SpecFlow功能文件中具有相同的步骤,如下所示:enter image description here

右键单击并转到定义时,它们都在公共步骤定义文件中转到此位置:

        public void GivenUserNameOf(string userName)
        {
            SetUser(userName);
        }

但是,当我检查文件后面的生成代码时,会看到两件事:

 testRunner.Given(string.Format("user name of {0}", userName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given ");

正在运行,并且此:

 testRunner.Given("user name of <userName>", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given ");

之所以失败,是因为传入的字符串是userName(括号内有尖括号,编辑器认为括号是链接语法,因此我将其省略了),结果是“对象引用未设置为对象的实例“在我的代码中。

我尝试删除功能部件文件和文件背后的代码并重新创建它们,并尝试删除这些文件以及temp文件夹中的缓存文件。每次,文件后面的新功能文件代码仍然包含括号内的文本,而不是应包含的“ {0}”。

关于为什么的任何想法?

specflow
1个回答
0
投票

这两个方案之间的区别是,一个方案是作为方案大纲创建的(一个可行的方案),而另一个方案只是一个简单的方案。当我将方案更改为新的方案大纲时,它也开始起作用。

© www.soinside.com 2019 - 2024. All rights reserved.