如何使用MSpec在行为类中获取Intellisense?

时间:2015-07-23 12:57:58

标签: visual-studio-2013 bdd mspec

我正在使用MSpec-Framework为我们的新项目实施BDD。我是BDD概念的新手,因此对MSpec也很新,并且有问题要解决感兴趣的对象(示例中为_obj2),至少Visual Studio intellisense不会在Behavior-Class中提出它,特别是在should_do_some_fancy_magic - 上下文

namespace exampleSpace{
  public partial class ExampleClass{
    private ObjectOfAnotherClass _obj2

    private void Test(ObjectOfAnotherClass _co)
    ...
  }
}


namespace exampleSpace.Test{
  [Behaviors]
  class ExampleClassBehavior{

    Establish context =()=>{...};

    It should_do_some_fancy_magic() =()=>
      ShouldBeEqual(ExampleValue, _ex.Test(_ex._obj2);

    private static ExampleClass _ex;
  }
}

如何让智能感知在Behavior-Class内工作?

1 个答案:

答案 0 :(得分:0)

您不需要为上下文设置[Behaviors]。行为用于在上下文之间重用It。这是一个很少出现的用例。

这应该可行,尽管未经测试:

namespace exampleSpace{
  public partial class ExampleClass {
     public void Test(ObjectOfAnotherClass _co)
      _co.Foobar = 42;
  }
}

namespace exampleSpace.Test {
  [Subject(typeof(ExampleClass))] // This is optional.
  class When_something_happens
  {
    static ObjectOfAnotherClass Other;
    static ExampleClassOther SystemUnderTest ;

    Establish context  = () => {
      Other = new ObjectOfAnotherClass();
      SystemUnderTest = new ExampleClass();
    }

    Because of = () => {
      SystemUnderTest.Test(Other);
    }

    It should_do_some_fancy_magic() =
      () => Other.Foobar.ShouldEqual(42);
   }
}

您可以查看some MSpec samples here