나는 앵글 2 서비스에서 테스트하고 싶은 기능이 있습니다.각도 2 테스트에서 모듈 위조
service.ts
upload(){
let file = new Transfer();
file.upload(myfile).then(// my callback);
}
나는 jasmine
를 사용하여 내 시험에서 Transfer
을 조롱하고 싶습니다. 나는
sevice.spec.ts
import { TransferMock as Transfer } from '../mocks/mocks'
그것을 조롱하는 내에서 이것을 시도했다. 하지만 작동하지 않습니다. 이것은 내 테스트가 인스턴스화되는 방법입니다.
describe('authentication service' ,() => {
beforeEach(() => {
auth = new Service(<any>new HttpMock(), <any>new StorageMock())
});
it('initialize authentication',() => {
expect(auth).not.toEqual(null);
auth.upload('file'); //it fails here
});
})
편집
Transfer
는 서비스에 주입되지 않습니다. 하나의 기능 만 Transfer
을 사용합니다. 따라서 주입하지 않으면 앱의 초기 로딩 시간을 줄일 수 있습니다 (다른 의견을 알게되어 행복 할 것입니다). 그래서 나는이 방법으로 그것의 구조가 있다면 어쨌든 모의가 있는지 알고 싶다?
편집이 가장 좋은 방법이기 때문에 나는 마틴의 답변을 받아했지만
, 그것은 당신이 실패 할 수 있습니다 브라우저 지원이 나던 플러그인 plugins.If ionic-native
를 사용할 때 발생할 수있는 하나의 문제가있다. 이 경우에는 주입했을 때 오류 FileTransfer is not defined
이 발생했습니다. 그래서 나는 다시 돌아와서 제안을 찾는다.
빠른 답장을 보내 주신 Martin 감사합니다.내 질문에 언급 한 것처럼''전근 ''이 내 서비스에 주입되지 않는다. 하나의 함수 만''전송 ''을 사용합니다. 그래서 주사하지 않으면 초기로드 시간을 줄일 수 있습니다. (?). 그래서 나는이 방법으로 그것의 구조가 있다면 어쨌든 모의가 있는지 알고 싶다? – raj
아니요. 마틴의 말대로해야합니다. 한 가지 방법으로 만 사용 되더라도 서비스에 전송하는 데는 단점이 없습니다. 이것은 일반적인 패턴입니다. – philipooo
@raj Dependancy Injection을 사용하면 성능이 저하되지 않습니다. 대신 테스트 할 수있는 코드의 이점을 누릴 수 있습니다. – Martin