Jac*_*kie 6 karma-jasmine angular2-routing angular2-testing angular2-router3 angular
我有以下代码......
export class LoginComponent {
userName: string;
password: string;
rememberMe: boolean = false;
constructor( private auth: AuthenticationService,
private router: Router) {
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试单元测试,但我的第一次尝试失败了....
beforeEach(() => {
router = new Router();
component = new LoginComponent(authService, router);
});
Run Code Online (Sandbox Code Playgroud)
因为它需要Router构造函数的参数.我在这看到 ......
beforeEach(() => addProviders([
APP_ROUTER_PROVIDERS, // must be first
{provide: APP_BASE_HREF, useValue: '/'}, // must be second
{provide: ActivatedRoute, useClass: Mock},
{provide: Router, useClass: Mock}
]));
Run Code Online (Sandbox Code Playgroud)
但我似乎没有APP_ROUTER_PROVIDERS或Mock依赖于任何地方,所以我认为它可能是陈旧的(或者我需要依赖).
我该如何嘲笑这个?它对我正在进行的测试并不重要.
对于一个简单的情况,您可以创建自己的模拟并按值提供,例如:
describe('whatever', () => {
let mockRouter: any;
...
beforeEach(async(() => {
// create your own mock
mockRouter = jasmine.createSpyObj('Router', ['navigate']);
...
TestBed.configureTestingModule({
declarations: [LoginComponent],
providers: [
// provide it by value
{ provide: Router, useValue: mockRouter },
...
],
}).compileComponents();
}));
...
});
Run Code Online (Sandbox Code Playgroud)
这使用了测试床的依赖注入,而不是试图" new测试"被测试的类.
有关上下文中的示例,请参阅我在GitHub上的一个项目.
| 归档时间: |
|
| 查看次数: |
3710 次 |
| 最近记录: |