使用以下代码,我得到以下错误: NinjaSteps.cs(16,13):错误CS0103:当前上下文中不存在名称'ninja'
我用来编译的命令行是:
csc /target:library /reference:C:\Ruby193\lib\ruby\gems\1.9.1\gems\
cuke4nuke-0.4.0\dotnet\Cuke4Nuke.Framework.dll /reference:C:\Fitnesse\FitNesseRo
ot\jediwhale-fitsharp-a78d820\binary\tools\nunit\framework\nunit.framework.dll /
reference:C:\Users\Rahul\Documents\Visual~1\Projects\ConsoleApplication3\Console
Application3\Ninja.dll NinjaSteps.cs
我尝试编译的代码来自Cucumber自动化技术教程:
NinjaSteps.cs:
http://cuke4ninja.com/sec_ninja_survival_net.html
using System;
using System.Collections.Generic;
using System.Text;
using Cuke4Nuke.Framework;
using NUnit.Framework;
using NinjaSurvivalRate;
namespace ConsoleApplication3
{
class NinjaSteps
{ [Given(@"^the ninja has a ([a-z]*) level black-belt$")]
public void TheNinjaHasABlackBelt(String level)
{ ninja = new Ninja(level);
}
[When(@"^attacked by [a\s]*(.*)$")]
public void AttackedBy(String opponent)
{
actions = ninja.AttackedBy(opponent);
}
[Then("^the ninja should (.*)$")]
public void TheNinjaShould(String action)
{
Assert.IsTrue(actions.Contains(action));
}
}
}
Ninja.cs在下面,编译为Ninja.dll:
using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;
namespace NinjaSurvivalRate
{
public class Ninja
{
public Ninja(String beltLevel)
{
}
public List<String> AttackedBy(String opponent)
{
if ("Chuck Norris" == opponent)
return new List<string>(
new String[] { "run for his life" });
else
return new List<string>(
new String[] { "engage the opponent" });
}
}
}
答案和反馈将不胜感激。通过类似的线程,我发现解决方案取决于具体情况,并且它们没有一致的根本原因,并且我觉得我必须详细说明确切的代码细节以了解原因。您的时间和帮助将不胜感激。感谢。
答案 0 :(得分:1)
您尚未定义变量ninja
。你需要:
var ninja = new Ninja(level);
为行动做同样的事。
编辑:
实际上,如果我理解你的意图,两个变量都应该是类本身的字段/属性。
答案 1 :(得分:0)
本教程并未告诉您整个历史记录。如果您转到source code,您会看到实际上声明的字段ninja
已在方法TheNinjaHasABlackBelt
中初始化(您已经拥有)。