我正在测试一个角度cli项目中的很多组件,并且我在其中一些项目中使用RouterTestingModule
来存根路由器。我想在所有测试中添加RouterTestingModule
,因此我不必有选择地添加它。
我将其添加到test.js
中的测试设置中,如下所示,但它似乎没有包含在组件的测试模块中。这是包含" global"的正确方法吗?提供者?
Promise.all([
System.import('@angular/core/testing'),
System.import('@angular/platform-browser-dynamic/testing'),
System.import('@angular/router/testing'),
])
// First, initialize the Angular testing environment.
.then(([testing, testingBrowser, testingRouter]) => {
testing.getTestBed().initTestEnvironment(
testingBrowser.BrowserDynamicTestingModule,
testingBrowser.platformBrowserDynamicTesting(),
testingRouter.RouterTestingModule,
);
})
// Then we find all the tests.
.then(() => require.context('./', true, /\.spec\.ts/))
// And load the modules.
.then(context => context.keys().map(context))
// Finally, start Karma to run the tests.
.then(__karma__.start, __karma__.error);
文档说明initTestEnvironment
:
这可能只被调用一次,以设置公共提供者 当前平台上的当前测试套件。
答案 0 :(得分:1)
稍晚但解决方法是将一组提供程序传递给platformBrowserDynamicTesting()函数。
Promise.all([
System.import('@angular/core/testing'),
System.import('@angular/platform-browser-dynamic/testing'),
System.import('@angular/router/testing'),
])
// First, initialize the Angular testing environment.
.then(([testing, testingBrowser, testingRouter]) => {
testing.getTestBed().initTestEnvironment(
testingBrowser.BrowserDynamicTestingModule,
testingBrowser.platformBrowserDynamicTesting([..<providers here>..])
);
})
// Then we find all the tests.
.then(() => require.context('./', true, /\.spec\.ts/))
// And load the modules.
.then(context => context.keys().map(context))
// Finally, start Karma to run the tests.
.then(__karma__.start, __karma__.error);