2014-06-26 11 views
6

yılında Spock çerçeve birim test günlüğü hatası için:Bir iletiyi kaydeder bir yöntem olan bir sınıf var nasıl Yani harika

class Car { 
    private Logger logger = LoggerFactory.getLogger(Car.class); 


    void startCar() { 
     logger.error("car stopped working"); 
    } 
} 

hata Spock test çerçevesini kullanarak açmış olduğu nasıl test edebilir?

class CarTest extends Specification { 
    def "test startCar"() { 
     given: 
     Car newCar = new Car(); 

     when: 
     newCar.startCar(); 

     then: 
     // HOW CAN I ASSERT THAT THE MESSAGE WAS LOGGED??? 
    } 
} 

cevap

12

logger hatanın ayin için kontrol edebilir

@Grab(group='org.spockframework', module='spock-core', version='0.7-groovy-2.0') 
@Grab(group='org.slf4j', module='slf4j-api', version='1.7.7') 
@Grab(group='ch.qos.logback', module='logback-classic', version='1.1.2') 

import org.slf4j.Logger 

class MockLog extends spock.lang.Specification { 

    public class Car { 
     private Logger logger = org.slf4j.LoggerFactory.getLogger(Car.class); 
     void startCar() { 
      logger.error('car stopped working'); 
     } 
    } 

    def "mock log"() { 
    given: 
     def car = new Car() 
     car.logger = Mock(Logger) 
    when: 
     car.startCar() 
    then: 
     1 * car.logger.error('car stopped working') 
    } 
} 
İlgili konular