我正在嘗試對一個服務進行單元測驗,該服務根據我創建的 API 的回應創建 cookie。
export interface ISessionService {
createSession(): Observable<ApplicationSession>;
validateSession(): Observable<boolean>;
}
回應如下所示:
export abstract class ApplicationSession {
public readonly reference: string;
public readonly dateCreated: Date;
public readonly expiryDate: Date;
}
當SessionService.createSession()被呼叫時,它會執行 rxjs tap 并通過另一個服務創建一個 cookie,我正在嘗試測驗是否使用正確的引數呼叫了 cookieService。像這樣:
describe('given a successful request to create a session', () => {
beforeEach(() => {
jestSpyOn(cookiesService, 'setCookie').mockClear();
jestSpyOn(sessionApi, 'createSession').mockReturnValue(of({
data: {
sessionReference: 'some-reference',
dateCreated: '1996-10-15T04:35:32.000Z',
expiryDate: '1996-10-15T15:35:32.000Z',
statusCode: 200
},
exception: null,
hasError: false
}));
});
it('Then a session cookie is set from the API response', (done) => {
subject.createSession().subscribe();
expect(cookiesService.setCookie).toHaveBeenCalledWith(ApplicationCookies.SESSION_COOKIE, {
dateCreated:'1996-10-15T04:35:32.000Z',
expiryDate: '1996-10-15T15:35:32.000Z',
reference: 'some-reference'
}, { expires: '1996-10-15T15:35:32.000Z', path: "/", sameSite: "strict", secure: true });
done();
});
});
不過,我似乎總是遇到同樣的錯誤:
Error: expect(jest.fn()).toHaveBeenCalledWith(...expected)
- Expected
Received
"mock-sessionCookie",
Object {
- "dateCreated": "1996-10-15T04:35:32.000Z",
- "expiryDate": "1996-10-15T15:35:32.000Z",
"dateCreated": 1996-10-15T04:35:32.000Z,
"expiryDate": 1996-10-15T15:35:32.000Z,
"reference": "some-reference",
},
Object {
- "expires": "1996-10-15T15:35:32.000Z",
"expires": 1996-10-15T15:35:32.000Z,
"path": "/",
"sameSite": "strict",
"secure": true,
},
Number of calls: 1
我試過使用,date.parse('')但這不起作用......做出這個斷言的正確方法是什么?我想不通。我不能像測驗建議的那樣輸入日期,因為它不是數字。
謝謝
uj5u.com熱心網友回復:
出現此問題的原因很可能是您呼叫的mockReturnValue是日期字串而不是日期物件。
因此嘗試更改您的mockReturnValue呼叫以回傳 Date 物件而不是字串,例如
dateCreated: new Date('1996-10-15T04:35:32.000Z'),
expiryDate: new Date('1996-10-15T15:35:32.000Z'),
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/366057.html
上一篇:以8位數字分隔年、月和日
下一篇:如何在curl命令中使用日期變數
