2016-11-05 179 views
0

我有這個簡單的組件簡單Angular2組件:茉莉花測試不工作

@Component({ 
    selector: 'messages', 
    styleUrls: ['messages.component.scss'], 
    templateUrl: 'messages.component.html', 
}) 
export class MessagesComponent implements OnInit { 

    constructor(private dataService: DataService) {} 

    public getOne(): number{ 
     return 1; 
    } 
} 

我試圖運行它的測試,但我不能讓它工作,請幫助:

describe('Component: MessagesComponent',() => { 
    let component: MessagesComponent; 

    beforeEach(() => { 
     TestBed.configureTestingModule({ 
      declarations: [MessagesComponent], 
     }).compileComponents(); 

     const fixture = TestBed.createComponent(MessagesComponent); 
     component = fixture.componentInstance; 
    }); 

    it('should have a defined component',() => { 
     expect(true).toBeTruthy(); 
    }); 

}); 

(我用的WebPack如果是相關的)

這是錯誤我得到:

Error: This test module uses the component MessagesComponent 
which is using a "templateUrl", but they were never compiled. 
Please call "TestBed.compileComponents" before your test. 

回答

1

Error: This test module uses the component MessagesComponent which is using a "templateUrl", but they were never compiled. Please call "TestBed.compileComponents" before your test.

使用Webpack時,您不需要編譯組件(使用templateUrl)。當您使用angular2-template-loader時,templateUrl應該轉換爲內嵌template

請參閱Angular文檔中的webpack.test.js示例。您需要確保您具有加載器的依賴關係。我猜想你應該已經擁有它用於雖然

"devDepdendencies": { 
    "angular2-template-loader": "^0.4.0", 
} 

如果你還在困惑我聯繫上面的單一配置文件中的主要項目,你可能只是想讀取整個Angular docs on webpack。不應該花那麼長時間。但它會引導您完成主應用程序和測試的設置。

也看着你的previous question,你的webpack配置沒有任何sass支持。我想這是你在主應用程序webpack配置中配置的東西。你可以看看它是如何配置的。或者你可以檢查this out。這基本上是我從Angular文檔中整理出來的一個項目,就像一個地方的所有內容一樣。 Angular文檔不添加任何sass支持,但鏈接的項目確實添加了它。