即时寻找类似于我会用rhino mock做的事情,但在groovy中。在同一个服务类中调用方法时嘲讽一种方法groovy grails
我有时也使用部分模拟。
在ASP - 犀牛嘲笑
const string criteria = "somecriteriahere";
ISomeRepository mockSomeRepository = MockRepository.GenerateStrictMock<SomeRepository>();
mockSomeRepository.Expect(m => m.GetSomesByNumber(criteria)).Return(new List<Some>() { });
mockSomeRepository.Expect(m => m.GetSomesByName(criteria)).Return(new List<Some>() { });
mockSomeRepository.Expect(m => m.GetSomesByOtherName(criteria)).Return(new List<Some>() { });
mockSomeRepository.SearchForSomes(criteria);
mockSomeRepository.VerifyAllExpectations();
--------注意虚拟-------
public class SomeRepository : ISomeRepository {
public virtual IEnumerable<Some> GetSomesByNumber(string num)
{
//some code here
}
public virtual IEnumerable<Some> GetSomesByName(string name)
{
//some code here
}
public virtual IEnumerable<Some> GetSomesByOtherName(string name)
{
//some code here
}
public IEnumerable<Some> SearchForSomes(string criteria) {
this.GetSomesByNumber(criteria); //tested fully seperatly
this.GetSomesByName(criteria); //tested fully seperatly
this.GetSomesByOtherName(criteria); //tested fully seperatly
//other code to be tested
}
}
GetSomesByNumber,GetSomesByName,GetSomesByOtherName会完全分开测试。如果我实际上提供了价值观并进入了这些功能,对我来说,这看起来就像在集成测试中那样,测试多个功能而不是一个工作单元。
因此,SearchForSomes我只会测试该方法并嘲笑所有其他依赖项。
Grails中
class XService {
def A() {
}
def B() {
def result = this.A()
//do some other magic with result
}
}
我已经试过这一点 - 但未能
def XServiceControl = mockFor(XService)
XServiceControl.demand.A(1..1) { -> return "aaa" }
// Initialise the service and test the target method.
//def service = XServiceControl.createMock();
//def service = XServiceControl.proxyInstance()
// Act
//def result = XServiceControl.B(_params);
XServiceControl.use {
new XService().B(_params)
}
Ive得到了不知道如何做到这一点,没有任何一个知道如何?
感谢
它是如何失败? – hvgotcodes 2011-02-28 16:53:51