我正在使用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
内工作?
答案 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。