Auf meiner Anwendung, in einem Navigationsschutz, der von meinem Router verwendet wird, habe ich einen vuex Namespaced Getter, um den Authentifizierungsstatus zu überprüfen. Der Getter überprüft die Magie, ob der Benutzer authentifiziert ist.Stubbing vuex getters mit sinonjs
Ich möchte einen einfachen Komponententest schreiben, der überprüft, ob die Umleitung gemäß dem authentifizierten Zustand erfolgt. Ich stehe darauf, den Getter zu stubben.
Mein Getter ist die folgende:
isAuthenticated (state) {
return state.token !== null
}
Mein Authentifizierungsmodul ist die folgende:
export default {
namespaced: true,
state,
getters
}
Und mein Geschäft ist die folgende:
export default new Vuex.Store({
modules: {
authentication
}
})
Mein naviguation Wache ist:
import store from '@/store'
export default (to, from, next) => {
if (store.getters['authentication/isAuthenticated']) {
next()
return
}
next({name: 'login'})
}
Ich habe geschrieben, dass Unit-Test:
describe('authenticated-guard.spec.js',() => {
let authenticatedStub
beforeEach(() => {
authenticatedStub = sandbox.stub(store.getters, 'authentication/isAuthenticated')
})
afterEach(() => {
sandbox.restore()
})
it('should redirect to login route when the user is not authenticated',() => {
// Given
const to = {}
const from = {}
const next = spy()
authenticatedStub.value(false)
// When
authenticatedGuard(to, from, next)
// Then
assert.ok(next.calledWith({name: 'login'}), 'should have redirected to login route')
})
})
Der Unit-Test die folgenden Fehler auslösen: TypeError: Cannot redefine property: authentication/isAuthenticated
.
Ich habe als Alternative zu Stub mit authenticatedStub.value(false)
versucht, aber der Fehler ist der gleiche. Ich bin nicht in der Lage, den Getter zu stubben, zu vermeiden, Speicherlogiken auf Wachtests zu haben.
Kann jemand Getter außerhalb von Komponenten stubben?
Grüße
Dank! Es klappt –