2

使用以下代码,我得到以下错误: NinjaSteps.cs(16,13): error CS0103: The name 'ninja' does not exist in the current context

我用来编译的命令行是: 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" });
        }
    }
}

答案和反馈将不胜感激。通过类似的线程,我发现解决方案取决于具体情况,并且它们不是一致的根本原因,并且觉得我必须详细说明确切的代码细节才能了解原因。您的时间和帮助将不胜感激。谢谢。

4

2 回答 2

1

您尚未定义变量ninja。你需要:

var ninja = new Ninja(level);

对动作做同样的事情。

编辑:

实际上,如果我正确理解您的意图,这两个变量都应该是类本身的字段/属性。

于 2012-09-30T06:02:49.887 回答
0

本教程并没有告诉你整个历史。如果您查看源代码,您将看到实际上ninja声明了一个在方法中初始化的字段TheNinjaHasABlackBelt(您已经拥有)。

于 2012-09-30T06:32:39.240 回答